JavaScript 将具有相同 id 的对象转换为对象数组

标签 javascript arrays

我从我的 API 得到这个结果:

enter image description here

但是任何具有相同 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/

相关文章:

在 iOS 中执行 onkeyup 事件时,Javascript focus() 不起作用

javascript - 我如何计算对 DESCRIPTION 或 ACCEPTANCE CRITERIA 字段的更改次数

javascript - 数组中的对象在推送后被修改

java - 读取整数并将其存储在数组中

python - 如何将 python 2.7 中的 bytearray 转换为十进制字符串?

javascript - 如何在另一个异步 `each` 方法(NodeJS)中调用异步方法?

javascript - 处理 <select><option> 时 jQuery 在 Internet Explorer 11 中不起作用

javascript - React Native 时间线 ListView

ruby-on-rails - 使用 ERB 打印数组元素

python - 从数组列表中查找唯一代表(元素)的列表