如何将响应对象映射到 JavaScript 中的对象数组?

How to map the response object to array of objects in JavaScript?

我希望通过 运行 两个不同的循环将我的响应对象之一映射到现有的对象数组,如果在对象中找不到匹配的键,我无法以某种方式删除该值.

如果键不匹配,有什么方法可以使值变为 null 吗?

我试过以下方法:

const data = {
  test1: 1,
  test2: 2
};

const val = [
  {
    id: 'test1',
    val: 2222
  },
  {
    id: 'test2',
    val: 5555
  },
  {
    id: 'test3',
    val: 4444
  }
];

val.forEach(element => {
  Object.entries(data).forEach(([key, value]) => {
    if (element.id === key) {
      element.val = value;
    }
  });
});

console.log(val);
// output:
// const val = [
//   {
//     id: 'test1',
//     val: 1
//   },
//   {
//     id: 'test2',
//     val: 2
//   },
//   {
//     id: 'test3',
//     val: ""
//   }
// ];

你不需要循环。只需检查 属性 是否存在。

const data = {
  test1: 1,
  test2: 2
};

const val = [{
    id: 'test1',
    val: 2222
  },
  {
    id: 'test2',
    val: 5555
  },
  {
    id: 'test3',
    val: 4444
  }
];

val.forEach(element => {
  if (data.hasOwnProperty(element.id)) {
    element.val = data[element.id];
  } else {
    element.val = "";
  }
});

console.log(val);