Обновить данные массива на основе ключа в другом массиве - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу обновить данные массива на основе ключа, присутствующего в другом массиве, и, если ключа нет, выведите данные со значением 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}
 ]

1 Ответ

1 голос
/ 25 апреля 2019

Вы можете создать объект с keyValue элементами массива в качестве ключа и 0 в качестве значения. Затем переберите массив data, используя map и используйте 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)
...