我是编程和数学概念的完全新手(在大学学习数学101)所以我正在努力解决这个问题:
编写一个接收数字的函数,并多次返回一个包含该数字的数组。
这是我到目前为止的代码:
function numReturn(x) {
var newArray = [];
if (typeof x === "number") {
return newArray.push[x]* x;
} else {
return null;
}
}
这是我的思考过程:
typeof
值是否为数字。如果是,则将其返回到空白数组的末尾。否则,请返回null
。当我把它放在Javascript控制台并插入一个值时,它会返回undefined。任何人都有我的一些指示?
答案 0 :(得分:3)
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
答案 1 :(得分:1)
为了做任意次数的事情,人们使用循环。有几个循环,但这里for
循环是最合适的。
for
循环具有以下结构:
for(var i = 0; i < x; i++) {
// ^initializer
// ^condition
// ^increment
//body
}
初始化程序是在进入循环时完成的第一件事。在这种情况下,它意味着名为i
的变量设置为0
。然后检查条件x
。如果条件i < x
成立,则执行循环:执行主体。在执行主体之后,执行增量(此处为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;
}
}
答案 2 :(得分:1)
这:newArray.push[x]* x
不推x次。 *运算符只是总是和只乘以数字。你想推x次,所以使用这样的for
:
for (var i = 0; i < x; i++ )
newArray.push(x);
然后返回newArray
。
答案 3 :(得分:1)
回答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]
答案 4 :(得分:0)
var n = 7
var result = Array.apply(null, {length: n}).map(function(){return n})
// Demo output
document.write(JSON.stringify(result))
&#13;
作为功能:
function numReturn(x) {
if (typeof x === "number") {
return Array.apply(null, {length: n}).map(function(){return n})
} else {
return null;
}
}