Javascript:编写一个函数,它接受一个数字,returns 一个包含该数字多次的数组

Javascript: Write a function that takes in a number, and returns an array with that number in it that many times

我是编程和数学概念的新手(在大学修过数学 101)所以我正在为这个问题而苦恼:

Write a function that takes in a number, and returns an array with that number in it that many times.

这是我目前得到的代码:

    function numReturn(x) {
         var newArray = [];
         if (typeof x === "number") {
             return newArray.push[x]* x;
         } else {
             return null;
         }
     }

这是我的思考过程:

  1. 创建一个可以接受数字 x 的函数。
  2. 在该函数中,创建一个空白数组,以便稍后向其推送值。
  3. 检查为 x 输入的 typeof 值是否为数字。如果是,return 它被推到空白数组的末尾。否则,return null.

当我将其放入 Javascript 控制台并插入一个值时,它返回未定义。有人能给我一些指示吗?

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;
     }
 }

为了做某事任意次数,使用循环。有几个循环,但这里 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;
    }
}

这:newArray.push[x]* x 没有推送 x 次。 * 运算符只是将数字相乘,始终且仅如此。你想推送 x 次,所以使用 for 这样的:

for (var i = 0; i < x; i++ )
      newArray.push(x);

然后 return newArray.

摘自 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]
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