我试图将更大的数组分成更小的块。
以下是一个例子:
var data = [ { number: '184805871' },
{ number: '3418400730' },
{ number: '2047901973' },
{ number: '5038880529' },
{ number: '5040293507' },
{ number: '5044243187' },
{ number: '5078304520' },
{ number: '5085466763' },
{ number: '5145133307' },
{ number: '5197540781' },
{ number: '5199065039' },
{ number: '5208120208' },
{ number: '5212123861' },
{ number: '5212383329' },
{ number: '5214353364' },
{ number: '5229836037' }
];
我的阵列比这长得多,这只是一个例子。所以我熟悉PHP中的array_chunk函数,并在php.js中找到它
function array_chunk (input, size, preserve_keys) {
var x, p = '', i = 0, c = -1, l = input.length || 0, n = [];
if (size < 1) {
return null;
}
if (Object.prototype.toString.call(input) === '[object Array]') {
if (preserve_keys) {
while (i < l) {
(x = i % size) ? n[c][i] = input[i] : n[++c] = {}, n[c][i] = input[i];
i++;
}
}
else {
while (i < l) {
(x = i % size) ? n[c][x] = input[i] : n[++c] = [input[i]];
i++;
}
}
}
else {
if (preserve_keys) {
for (p in input) {
if (input.hasOwnProperty(p)) {
(x = i % size) ? n[c][p] = input[p] : n[++c] = {}, n[c][p] = input[p];
i++;
}
}
}
else {
for (p in input) {
if (input.hasOwnProperty(p)) {
(x = i % size) ? n[c][x] = input[p] : n[++c] = [input[p]];
i++;
}
}
}
}
return n;
}
有没有比这更简单的方法呢?
这是我的代码:
var chunks = array_chunk(data, 3);
jQuery.each(chunks, function(index, value) {
console.log(index + ': ' + value);
});
如何从number到console.log而不是[Object]获取值?我尝试了值[0]等,但它无法正常工作..
对于每个数组拆分为3的每个数组,我需要从数组中获取索引和值。
我该怎么做?
答案 0 :(得分:1)
由于你的问题不清楚,你知道你可以轻松slice javascript中的任何数组吗?
以“获取数据数组并将其拆分为单独的数组,每个数组只有3个数字”:
var chunks = [];
for (var i=0; i<data.length;) {
chunks.push(data.slice(i, i+=3));
}
“通过每个数组并获取每个数组的值以及数组的索引”:
for (var i=0; i<chunks.length; i++) { // iter among chunks
for (var j=0; j<chunks[i].length; j++) { // iter in chunk
console.log(j, chunks[i][j].number); // show item j of the chunk number i
}
}
编辑:
如果要显示
...
12 ["5212123861", "5212383329", "5214353364"]
13 ["5212123861", "5212383329", "5214353364"]
14 ["5212123861", "5212383329", "5214353364"]
15 ["5229836037"]
你可以像这样迭代:
for (var i=0; i<chunks.length; i++) {
for (var j=0; j<chunks[i].length; j++) {
console.log(i*3+j, chunks[i].map(function(v){return v.number}));
}
}
答案 1 :(得分:0)
array.slice方法可以从数组的开头,中间或结尾提取切片,以满足您的任何需要。
var i,j,temparray,chunk = 10;
for (i=0,j=data.length; i<j; i+=chunk) {
temparray = data.slice(i,i+chunk);
// do whatever
}