js 如何遍历对象匹配到DD然后以此为分界,之前的数组内的数据push数据flag:true之后的为false

{
  "A": [
    {
      "data": 21,
    },
    {
      "data": 1,
    }
  ],
  "B": [
    {
      "data": 28,
    }
  ],
  "C": [
    {
      "data": 25,
    }
  ],
  "D": [
    {
      "data": 2,
    }
  ],
  "DD": [
    {
      "data": 2,
    },
    {
      "data": 22,
    }
  ],
  "QW": [
    {
      "data": 0,
    }

}

想要的数据格式

{
  "A": [
    {
      "data": 21,
       "flag": true,
    },
    {
      "data": 1,
       "flag": true,
    }
  ],
  "B": [
    {
      "data": 28,
      "flag": true,
    }
  ],
  "C": [
    {
      "data": 25,
      "flag": true,
    }
  ],
  "D": [
    {
      "data": 2,
      "flag": true,
    }
  ],
  "DD": [
    {
      "data": 2,
      "flag": false,
    },
      {
      "data": 22,
      "flag": false,
    }
  ],
  "QW": [
    {
      "data": 0,
      "flag": false,
    }

}
阅读 1.1k
1 个回答

如果你的keys是稳定的才可以这样处理,否则因为内存存储对象属性是不稳定的,就不能进行这样的处理。
类似伪代码

akeys=['A','B','C','D','DD','QW']
startFlag='DD' // 这里设置开始的标志特征信息 
OldData={
  "A": [
    {
      "data": 21,
    },
    {
      "data": 1,
    }
  ],
  "B": [
    {
      "data": 28,
    }
  ],
  "C": [
    {
      "data": 25,
    }
  ],
  "D": [
    {
      "data": 2,
    }
  ],
  "DD": [
    {
      "data": 2,
    },
    {
      "data": 22,
    }
  ],
  "QW": [
    {
      "data": 0,
    }

}
flag=True;
NewData={};
for ( i=0;i<akeys.length;i++){
   if (akeys[i]==startFlag){ // 通过这里设置
      flag=False;
   }
   t=OldData[akeys[i]]
   tA=[];
   for(j=0;j<t.length;j++){
      tO=t[j];
      tO["flag"]=flag;
      tA.push(tO);
   }
   NewData[akeys[i]]=tA;
}


已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
推荐问题