Javascript:编写一个接收数字的函数,并多次返回一个包含该数字的数组
Posted
技术标签:
【中文标题】Javascript:编写一个接收数字的函数,并多次返回一个包含该数字的数组【英文标题】:Javascript: Write a function that takes in a number, and returns an array with that number in it that many times 【发布时间】:2016-04-11 20:36:29 【问题描述】:我是编程和数学概念的新手(在大学里修过数学 101),所以我正在努力解决这个问题:
编写一个接收数字的函数,并多次返回包含该数字的数组。
这是我目前得到的代码:
function numReturn(x)
var newArray = [];
if (typeof x === "number")
return newArray.push[x]* x;
else
return null;
这是我的思考过程:
-
创建一个可以接受数字 x 的函数。
在该函数中,创建一个空白数组,以便稍后将值推送给它。
检查为 x 输入的
typeof
值是否为数字。如果是,则将其返回到空白数组的末尾。否则,返回null
。
当我将它放入 javascript 控制台并插入一个值时,它返回未定义。有没有人指点一下?
【问题讨论】:
【参考方案1】:function a(i)
var a = new Array(i);
return a.fill(i);
或return new Array(i).fill(i);
,简称。测试:
a(4)
// --> [4, 4, 4, 4]
Array.prototype.fill() 是一种 ES6 方法,尚未普遍实现。 Chrome 和 Firefox 有它,IE 没有 - 但是有一个 polyfill 可用。
比较:http://kangax.github.io/compat-table/es6/#test-Array.prototype_methods_Array.prototype.fill
【讨论】:
【参考方案2】:为了做某事任意次数,使用循环。有几个循环,但这里for
循环是最合适的。
for
循环具有以下结构:
for(var i = 0; i < x; i++)
// ^initializer
// ^condition
// ^increment
//body
初始化器是进入循环的第一件事。在这种情况下,这意味着名为i
的变量被设置为0
。然后检查条件x
。如果条件i < x
成立,则执行循环:执行主体。执行完body后,进行自增(这里i++
),然后重新检查条件,如果条件仍然成立,则再次执行循环,以此类推。
您可以按如下方式应用此概念:
function numReturn(x)
var newArray = [];
if (typeof x === "number")
for(var i = 0; i < x; i++)
newArray.push(x);
return newArray;
else
return null;
【讨论】:
谢谢先生的解释。我现在知道循环的工作原理是通过在数组中推送 x" 来检查 x 和 0 之间的数字,即 x。【参考方案3】:这个:newArray.push[x]* x
不会推送 x 次。 * 运算符只是将数字相乘,总是且仅。你想推送 x 次,所以使用 for
像这样:
for (var i = 0; i < x; i++ )
newArray.push(x);
然后返回newArray
。
【讨论】:
【参考方案4】:取自Most efficient way to create a zero filled JavaScript array?的回答
function numReturn(x)
return Array.apply(null, Array(x)).map(Number.prototype.valueOf,x);
console.log(numReturn(10)); // [10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
【讨论】:
【参考方案5】:var n = 7
var result = Array.apply(null, length: n).map(function()return n)
// Demo output
document.write(JSON.stringify(result))
作为函数:
function numReturn(x)
if (typeof x === "number")
return Array.apply(null, length: n).map(function()return n)
else
return null;
【讨论】:
壮观的单线。不过,我认为 OP 不会从中学到很多东西。 @JohnWhite:完全是我的想法。这里一介绍JSON,高阶函数,各种库函数,文档,……这简直是一下子看不懂。这就像给猴子一个打字机,并期待它开始打字莎士比亚。 (此评论无意冒犯任何人)。 @WillemVanOnsem 我只想睁开他的眼睛,这样他就可以看到还有更多的方法可以做到这一点。反正循环答案已经发布了。 另外.fill
更适合这个,我学到了一些新东西!以上是关于Javascript:编写一个接收数字的函数,并多次返回一个包含该数字的数组的主要内容,如果未能解决你的问题,请参考以下文章