通过 javascript 中的特定值将数组与对象 key/value 进行比较

Compare array with object key/value by specific value in javascript

我需要创建一个新对象 key/value。在其中,我需要来自现有 key/value 对象的值,并且我需要添加仅在数组中的值。

数组:

[{ name: "Computer", name: "Car", name: "House", name: "Flower"}]

对象key/value:

{ computer: { title: 'Computer', color: 'Black' }, house: { title: 'House', color: 'Red' }}

所以在这种情况下,新对象需要是:

{ computer: { title: 'Computer', color: 'Black' }, car: { title: 'Car', color:'' }, house: { title: 'House', color: 'Red' }, flower: { title: 'Flower', color:'' } } 

实现此目标的最简单方法是什么?我想遍历数组比较它们之间的值并提取重复的值,但我不确定该怎么做。

我假设第一个数组是单个对象的数组,每个对象的键都是 'name',就像 arr 数组中一样。

const arr = [ {name: "Computer"}, {name: "Car"}, {name: "House"}, {name: "Flower"}];
const objVal = { 
        computer: { title: 'Computer', color: 'Black' }, 
        house: { title: 'House', color: 'Red' }
        };
const expected = { 
        computer: { title: 'Computer', color: 'Black' }, 
        car: { title: 'Car', color:'' }, 
        house: { title: 'House', color: 'Red' }, 
        flower: { title: 'Flower', color:'' } 
        } 

let returnObj = {};

arr.forEach((element) => {
    const name = element.name;
    if (objVal[name.toLowerCase()]) {
        returnObj[name.toLowerCase()] = objVal[name.toLowerCase()];
    } else {
      returnObj[name.toLowerCase()] = {
        title: name,
        color: ''
      }
    }
});

console.log(returnObj);