简体   繁体   English

Javascript:如何切片对象数组?

[英]Javascript : how to slice an array of objects?

So, I have an array of objects like this: 所以,我有一个这样的对象数组:

    for(var i=0; i<travelcard_table.length;i++){
        var table_row = travelcard_table.eq(i);
        var ii = 0;
        passenger_info[i] = {};
        table_row.find("td").each(function() {
                passenger_info[i][table_keys[ii]] = $(this).text();
                ii++;
        });
    }

passenger_info[0]['First name'] = "John"; etc..
passenger_info[1]['First name'] = "Chuck"; etc..

Im trying to split this to smaller arrays of objects every 10 entries, so Its something like this: 我试图每10个条目将其拆分为较小的对象数组,所以它是这样的:

var size = 10;
for (var i=0; i<passenger_count; i+=size) {
    var smallarray = passenger_info.slice(i,i+size); << "Error: Slice is not a function"
    console.log(smallarray);
    // do something with smallarray
}

How to achieve this? 如何实现呢?

var passenger_info = [[], []];

passenger_info[0]['First name'] = "John";
passenger_info[1]['First name'] = "Chuck"; 
var sliced = passenger_info.slice(0,1);
alert(sliced[0]['First name']);

This alerts 'John', because passenger_info is an Array of Array objects and you are attaching properties to the array object and not to its items. 这会警告“ John”,因为passenger_info是一个数组对象数组,并且您正在将属性附加到数组对象而不是其项。

for an array of objects it should be: 对于对象数组,应为:

var passenger_info = [ {} , {}];

passenger_info[0].firstname = "John";
passenger_info[1].firstname = "Chuck"; 
var sliced = passenger_info.slice(0,1);
alert(sliced[0].firstname);

like this you can workout 这样你就可以锻炼

for (var i=0; i<passenger_info.length; i+=10) {  
var smallArray = [];
    for(var j=0;j<10 && i+j < passenger_info.length;j++) {
        smallArray.push(passenger_info[i+j]);
    }
    console.log(smallArray);
}

for using slice you can do like this 使用切片你可以这样做

for (var i=0; i<passenger_info.length; i+=10) {  
    var smallArray = [],ls;
        for(var j=0;j<10 && i+j < passenger_info.length;j++) {
            ls = i+j;
        }
        smallArray  = passenger_info.slice(i,ls+1); 
console.log(smallArray);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM