我有一组电子邮件(可以是 1 封电子邮件,也可以是 100 封电子邮件),我需要使用 ajax 请求发送该数组(我知道该怎么做),但我只能发送一个具有其中包含 10 封或更少的电子邮件。因此,如果有 20 封电子邮件的原始数组,我需要将它们分成 2 个数组,每个数组 10 个。或者,如果原始数组中有 15 封电子邮件,那么 1 个数组为 10,另一个数组为 5。我正在使用 jQuery,那么最好的方法是什么?
如何使用 JavaScript 将长数组拆分为较小的数组
IT技术
javascript
jquery
arrays
loops
2021-01-29 07:47:34
6个回答
不要使用 jquery...使用普通的 javascript
var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
var b = a.splice(0,10);
//a is now [11,12,13,14,15];
//b is now [1,2,3,4,5,6,7,8,9,10];
你可以循环这个以获得你想要的行为。
var a = YOUR_ARRAY;
while(a.length) {
console.log(a.splice(0,10));
}
这将一次给你 10 个元素......如果你说 15 个元素,你会得到 1-10,你想要的 11-15。
只需遍历数组,拼接它,直到它全部被消耗掉。
var a = ['a','b','c','d','e','f','g']
, chunk
while (a.length > 0) {
chunk = a.splice(0,3)
console.log(chunk)
}
输出
[ 'a', 'b', 'c' ]
[ 'd', 'e', 'f' ]
[ 'g' ]
您可以使用 lodash:https ://lodash.com/docs
_.chunk(['a', 'b', 'c', 'd'], 2);
// → [['a', 'b'], ['c', 'd']]
假设您不想破坏原始数组,您可以使用这样的代码将长数组分解为较小的数组,然后您可以对其进行迭代:
var longArray = []; // assume this has 100 or more email addresses in it
var shortArrays = [], i, len;
for (i = 0, len = longArray.length; i < len; i += 10) {
shortArrays.push(longArray.slice(i, i + 10));
}
// now you can iterate over shortArrays which is an
// array of arrays where each array has 10 or fewer
// of the original email addresses in it
for (i = 0, len = shortArrays.length; i < len; i++) {
// shortArrays[i] is an array of email addresss of 10 or less
}
其它你可能感兴趣的问题