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 &lt; 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:编写一个接收数字的函数,并多次返回一个包含该数字的数组的主要内容,如果未能解决你的问题,请参考以下文章

javascript 编写

函数式编程javascript

javascript中的数字格式(可以是函数)

实验:从命令行接收多个数字并求和

课后作业2——编写一个程序,此程序从命令行接收多个数字,求和之后输出结果。

Javascript-乘以2个数字并返回数字