我从我的 API 得到这个结果:
但是任何具有相同 id 的对象(如最后 2 个)我都希望被分组到一个对象中,因此数组中只有 3 个项目 (0,1,2),最后一个将嵌套在最后一个,因为它有重复的 ID。它是从 SQL 中以正确的格式排序的,所以我希望它保持它的顺序。
最多可能有 50 个具有相同 id 的对象可能需要嵌套,我尝试使用数组和 key ,但无法获得所需的结果
if(data.length > 0){
console.log(value);
try{
if(value.id == s[key - 1].id){
console.log("match");
s.push(value);
} else {
orderobj.push(s);
}
} catch(ex){}
console.log(orderobj);
}
最佳答案
由于您的所有同类 ID 都是连续的,因此您在根据 API 数据创建新集合时可以进行非常简单的检查。只需不断将对象添加到数组中,直到 ID 不再匹配,然后将该数组添加到父数组中。
var apiData = [
{id: 1, text: '1asdf'},
{id: 2, text: '2asdf'},
{id: 3, text: '3asdf'},
{id: 4, text: '4asdf'},
{id: 4, text: '5asdf'},
];
var dataArray = [];
for(let i=0;i<apiData.length;++i) {
var dataItem = [];
dataItem.push(apiData[i]);
while(i < apiData.length-1 && apiData[i].id === apiData[i+1].id) {
++i
dataItem.push(apiData[i]);
}
dataArray.push(dataItem);
}
console.log('Final Array:', dataArray);
关于JavaScript 将具有相同 id 的对象转换为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46608823/