我正在尝试修改一些代码,其中我需要添加一个计数到数组。
数据和代码如下:
var data = {
"people": [{
"id": "32",
"description": "some description",
"archived": "",
"new": 0,
"names": [{
"name": "name 1",
"translations": null
}, {
"name": "name 2",
"translations": null
}],
}, {
"id": "56",
"description": "some description",
"archived": "",
"new": 0,
"names": [{
"name": "name 3",
"translations": null
}, {
"name": "name 4",
"translations": null
}],
}, {
"id": "99",
"description": "some description",
"archived": "",
"new": 0,
"names": null,
},
]
};
var mainData = [data];
var namesList = [];
for (var i = 0; i < mainData[0].people.length; i++) {
var obj = mainData[0].people[i];
if( obj.names ) {
var nme = obj.names.map( function(item){
return item.name;
});
namesList = namesList.concat(nme);
}
}
console.log(namesList); //This should have the list of names
我需要做的是添加一个新的数组,其中包含每个名称字段的计数,例如…当前的数据输出将是:
[2,2]…因为有2条记录,每条记录包含2个名字。
我如何添加这个?
只需将您的nme
数组的长度添加到您想要保存计数的其他数组
var namesCount = [];
//...
if (obj.names) {
var nme = obj.names.map(function(item) {
return item.name;
});
namesList = namesList.concat(nme);
namesCount.push(nme.length);
}
//..
console.log(namesCount);
演示var data = {
"people": [{
"id": "32",
"description": "some description",
"archived": "",
"new": 0,
"names": [{
"name": "name 1",
"translations": null
}, {
"name": "name 2",
"translations": null
}],
}, {
"id": "56",
"description": "some description",
"archived": "",
"new": 0,
"names": [{
"name": "name 3",
"translations": null
}, {
"name": "name 4",
"translations": null
}],
}, {
"id": "99",
"description": "some description",
"archived": "",
"new": 0,
"names": null,
},
]
};
var namesList = [];
var namesCount = [];
for (var i = 0; i < data.people.length; i++) {
var obj = data.people[i];
if (obj.names) {
var nme = obj.names.map(function(item) {
return item.name;
});
namesList = namesList.concat(nme);
namesCount.push(nme.length);
}
}
console.log(namesCount);
如果你想把它存储在原来的data
上,那么就把它设置为某个属性
data.namesCount = [];
//...
if (obj.names) {
var nme = obj.names.map(function(item) {
return item.name;
});
namesList = namesList.concat(nme);
data.namesCount.push(nme.length);
}
//..
console.log(data.namesCount);
也因为你没有过滤掉或从obj.names
中删除任何对象,你可以只获得该数组的长度来获得计数
namesCount.push( obj.names.length );