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;
}
}
这是我的思考过程:
- 创建一个可以接受数字 x 的函数。
- 在该函数中,创建一个空白数组,以便稍后向其推送值。
- 检查为 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
我是编程和数学概念的新手(在大学修过数学 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;
}
}
这是我的思考过程:
- 创建一个可以接受数字 x 的函数。
- 在该函数中,创建一个空白数组,以便稍后向其推送值。
- 检查为 x 输入的
typeof
值是否为数字。如果是,return 它被推到空白数组的末尾。否则,returnnull
.
当我将其放入 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