在 JS 中用多个值填充数组的最快方法。我可以将一些模式或函数传递给方法填充 JS 中的单个值吗?
Fastest way to fill an array with multiple value in JS. Can I pass a some pattern or function to method fill insted of a single value in JS?
有什么方法可以创建一个选定大小的数组(例如 10)并立即用一些指定模式的数字(1、2、3 或 2、4、6 等等)填充它) 在 JS 的一个语句中?
let arr = new Array(10).fill( (a) => {a = 1; return a++; } );
console.log(arr); // Should be 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
换句话说,我可以将一些模式或函数传递给填充单个值的方法。
实际上有更好的习惯用法来创建范围:扩展的 Array
构造函数:
[...Array(n)]
创建一个包含 n
个未定义值的数组。要获得 0..n-1
,只需选择其 keys
:
[...Array(n).keys()]
对于任意范围,将其提供给 map
:
r = [...Array(10)].map((_, i) => i + 1)
console.log(r)
看这里:Does JavaScript have a method like "range()" to generate an array based on supplied bounds?
旧答案:
是的,您正在寻找 Array.from
:
r = Array.from({length: 10}, (_, i) => i + 1);
console.log(r)
这是如何工作的? .from
检查它的第一个参数(可以是任何对象)并选择它的 .length
属性。然后,它从 0
迭代到 length - 1
并使用两个参数调用第二个参数——一个值(除非第一个参数包含相应的数字 属性,否则它是未定义的)和一个索引,它从 0...length-1
中获取值。在这个例子中,我们有一个函数,它只是 returns 一个索引 + 1,因此给我们 1..length
.
这是对上述内容的有用包装:
let range = (from, to) => Array.from({length: to - from + 1}, _ => from++);
console.log(range(1, 10))
对于 ES5,成语是 Array.apply(null, {length:N})
:
r = Array.apply(null, {length: 10}).map(function(_, i) {
return i + 1
})
有什么方法可以创建一个选定大小的数组(例如 10)并立即用一些指定模式的数字(1、2、3 或 2、4、6 等等)填充它) 在 JS 的一个语句中?
let arr = new Array(10).fill( (a) => {a = 1; return a++; } );
console.log(arr); // Should be 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
换句话说,我可以将一些模式或函数传递给填充单个值的方法。
实际上有更好的习惯用法来创建范围:扩展的 Array
构造函数:
[...Array(n)]
创建一个包含 n
个未定义值的数组。要获得 0..n-1
,只需选择其 keys
:
[...Array(n).keys()]
对于任意范围,将其提供给 map
:
r = [...Array(10)].map((_, i) => i + 1)
console.log(r)
看这里:Does JavaScript have a method like "range()" to generate an array based on supplied bounds?
旧答案:
是的,您正在寻找 Array.from
:
r = Array.from({length: 10}, (_, i) => i + 1);
console.log(r)
这是如何工作的? .from
检查它的第一个参数(可以是任何对象)并选择它的 .length
属性。然后,它从 0
迭代到 length - 1
并使用两个参数调用第二个参数——一个值(除非第一个参数包含相应的数字 属性,否则它是未定义的)和一个索引,它从 0...length-1
中获取值。在这个例子中,我们有一个函数,它只是 returns 一个索引 + 1,因此给我们 1..length
.
这是对上述内容的有用包装:
let range = (from, to) => Array.from({length: to - from + 1}, _ => from++);
console.log(range(1, 10))
对于 ES5,成语是 Array.apply(null, {length:N})
:
r = Array.apply(null, {length: 10}).map(function(_, i) {
return i + 1
})