猿问

根据条件javascript将键值对附加到字典数组

我有一系列字典


var nodes =

{

A: {'name' : 'A'},

B:{'name' : 'B'},

C:{'name' : 'C'},

D:{'name' : 'D'}

E:{'name' : 'E'}}


另一个数组


var X_Group = ['A', 'B'];


我需要遍历每个字典元素,如果它存在于数组 X_Group 中,则将值 X 附加到它们,否则附加 Y。IE。


var nodes =

{

A: {'name' : 'A' , group :'X'},

B:{'name' : 'B', group :'X'},

C:{'name' : 'C', group :'Y'},

D:{'name' : 'D', group :'Y'},

E:{'name' : 'E', group :'Y'}

}


我努力了:


  for (var key in nodes){

    if (key in X_Group)

      nodes[key].group = 'X';

else 

      nodes[key].group = 'Y';

  }


But it does not work. Any suggestions  on how to fix the issue?


偶然的你
浏览 99回答 2
2回答

汪汪一只猫

假设nodes是一个Object而不是数组,并且X_Group是一个数组,您可以:重建你的nodes阵列,使用Object.assign()传递给Object.assign()(作为其第二个参数)键值对的展开数组 ( Array.prototype.map()) ,附加属性,根据是否在其中找到 (with )具有/值nodesgroup'X''Y'Array.prototype.includes()X_Groupconst nodes = {A:{'name':'A'},B:{'name':'B'},C:{'name':'C'},D:{'name':'D'},E:{'name':'E'}},      X_Group = ['A', 'B'],            result = Object.assign(        {},        ...Object          .keys(nodes)          .map(key =>            ({[key]: {              ...nodes[key],               group: X_Group.includes(nodes[key].name) ? 'X' : 'Y'            }})))            console.log(result).as-console-wrapper{min-height:100%;}

12345678_0001

您不能使用“in”来检查某个值是否在数组中。请改用 indexOf,它将返回元素的索引或 -1。使用这个条件:  if(X_Group.indexOf(nodes[key].name)!==-1)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答