【问题标题】:Update array data based on key in another array根据另一个数组中的键更新数组数据
【发布时间】:2019-04-25 11:03:19
【问题描述】:

我想根据另一个数组中存在的键更新数组数据,如果键不存在,则输出值为 0 的数据以及相应的键

let data = [{
    ORIGEN: "WB716594",
    "Gestor Ericsson OSS": 1
}, {
    ORIGEN: "MM-LORC-AGUI-L3-11_760525",
    "MM-LORC-AGUI-L3-11_760525": 1
}];

let keyValue = ["Gestor Ericsson OSS",
    "MM-LORC-AGUI-L3-11_760525",
    "Gestor HUA U2KVIA",
    "5620SAM"
]

这里的“Gestor HUA U2KVIA”和“5620SAM”不存在于数据中,因此应该如下附加

Output = [{ORIGEN: "WB716594", Gestor Ericsson OSS: 1, "MM-LORC-AGUI-L3-11_760525":0,Gestor HUA U2KVIA:0,5620SAM:0},
 {ORIGEN: "MM-LORC-AGUI-L3-11_760525", MM-LORC-AGUI-L3-11_760525: 1,Gestor Ericsson OSS: 0,Gestor HUA U2KVIA:0,5620SAM:0}
 ]

【问题讨论】:

  • 你能正确描述你的问题吗?看不懂。
  • 那个 JSON/Notation 对象无效。还有什么是计数数据?
  • 在数据数组中我没有得到所有的键,我想根据 keyValue 进行修改,无论哪个键不存在,我都想将计数更新为 0,如输出中所示。第一个值 ORIGEN 中该对象是 groupby 值,它将出现在数组中的所有对象中
  • edit 提出问题并包含有效的minimal reproducible example - 在 cmets 中解释自己没有意义
  • 嗨,这已经在描述中提供了

标签: javascript arrays object lodash arrayobject


【解决方案1】:

您可以创建一个对象,其中keyValue 数组项作为键,0 作为值。然后使用map循环遍历data数组并使用Object.assign获取每个项目的合并对象:

const data = [{ORIGEN:"WB716594","Gestor Ericsson OSS":1},{ORIGEN:"MM-LORC-AGUI-L3-11_760525","MM-LORC-AGUI-L3-11_760525":1}],
     keyValue = ["Gestor Ericsson OSS","MM-LORC-AGUI-L3-11_760525","Gestor HUA U2KVIA","5620SAM"]

const defaultObj = Object.assign({}, ...keyValue.map(key => ({ [key]: 0 })));
const output = data.map(obj => Object.assign({}, defaultObj, obj));

console.log(output)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 2012-02-09
    相关资源
    最近更新 更多