32 javascript jquery
有没有办法在javascript中生成字符或数字序列?
例如,我想创建包含8个1的数组.我可以用for循环来做,但想知道是否有一个jQuery库或javascript函数可以为我做?
Ari*_*yat 38
没有for循环,这是一个解决方案:
Array.apply(0, Array(8)).map(function() { return 1; })
Run Code Online (Sandbox Code Playgroud)
解释如下.
Array(8)生成一个包含8个元素的稀疏数组undefined.该apply技巧将它变成一个密集排列.最后,用map,我们替换undefined(相同)的值1.
Gou*_*J.M 25
这是迄今为止最简单的一个
const sequence = [...Array(10).keys()]
console.log(sequence)
Run Code Online (Sandbox Code Playgroud)
Output : [0,1,2,3,4,5,6,7,8,9]
Dag*_*bit 16
for (var i=8, a=[]; i--;) a.push(1);
Run Code Online (Sandbox Code Playgroud)
Nic*_*ver 15
您可以根据自己的例子制作自己的可重复使用的功能:
function makeArray(count, content) {
var result = [];
if(typeof content == "function") {
for(var i = 0; i < count; i++) {
result.push(content(i));
}
} else {
for(var i = 0; i < count; i++) {
result.push(content);
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以做以下任何一个:
var myArray = makeArray(8, 1);
//or something more complex, for example:
var myArray = makeArray(8, function(i) { return i * 3; });
Run Code Online (Sandbox Code Playgroud)
你可以在这里尝试一下,注意上面的例子根本不依赖于jQuery,所以你可以不用它.你只是没有从图书馆获得任何东西这样的东西:)
g.s*_*sui 11
如果您使用较新的Javascript语法,可以使用以下方法实现:
Array(8).fill(1)
Run Code Online (Sandbox Code Playgroud)
以下工作正常,但正如Matt指出的那样,关键字'new'是多余的.
new Array(8).fill(1)
Run Code Online (Sandbox Code Playgroud)
kts*_*com 10
使用Jquery:
$.map($(Array(8)),function(val, i) { return i; })
Run Code Online (Sandbox Code Playgroud)
返回:
[0, 1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
$.map($(Array(8)),function() { return 1; })
Run Code Online (Sandbox Code Playgroud)
返回:
[1, 1, 1, 1, 1, 1, 1, 1]
Run Code Online (Sandbox Code Playgroud)
2016年-现代浏览器功能到来了。一直不需要jquery。
Array.from({length: 8}, (el, index) => 1 /* or index */);
Run Code Online (Sandbox Code Playgroud)
您可以将箭头功能替换为简单的回调功能,以覆盖受支持的浏览器。至少对我来说,这是一步中迭代初始化数组的最简单方法。
注意:此解决方案不支持IE,但是在developer.mozilla.org / ...上有针对此的polyfill 。
range(start,end,step):使用 ES6 迭代器您可以轻松创建range()可以充当迭代器的生成器函数。这意味着您不必预先生成整个数组。
function * range ( start, end, step ) {
let state = start;
while ( state < end ) {
yield state;
state += step;
}
return;
};
Run Code Online (Sandbox Code Playgroud)
现在您可能想要创建一些东西,从迭代器预先生成数组并返回一个列表。这对于接受数组的函数很有用。为此我们可以使用Array.from()
const generate_array = (start,end,step) => Array.from( range(start,end,step) );
Run Code Online (Sandbox Code Playgroud)
现在您可以轻松生成静态数组,
const array = generate_array(1,10,2);
Run Code Online (Sandbox Code Playgroud)
但是,当某些东西需要迭代器(或者让您可以选择使用迭代器)时,您也可以轻松创建一个迭代器。
for ( const i of range(1, Number.MAX_SAFE_INTEGER, 7) ) {
console.log(i)
}
Run Code Online (Sandbox Code Playgroud)
一班轮:
new Array(10).fill(1).map( (_, i) => i+1 )
Run Code Online (Sandbox Code Playgroud)
产量:
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47299 次 |
| 最近记录: |