我想将两个基于itemId的对象数组合并为一个只有一些特定键的对象array.

我设法合并了它,但它包含了来自两个对象数组的所有键.我只想要orderIdnameitemName的.

const arrOrder = [
  { orderId: 1, userId: 1, name: "Zack", itemId: 100 },
  { orderId: 2, userId: 2, name: "Robin", itemId: 200 }
];

const arrItem = [
  { itemId: 100, itemName: "Fruits", itemDescription: "Apple and Oranges" },
  { itemId: 200, itemName: "Snacks", itemDescription: "Potato Chips and Nuts" }
];

const mergedArray = arrOrder.map((order) => {
  const matchedObject = arrItem.find((item) => item.itemId === order.itemId);
  return { ...order, ...matchedObject };
});

console.log(mergedArray);

我想要的结果是:

[{
  orderId: 1,
  name: 'Zack',
  itemName: 'Fruits'
}, {
  orderId: 2,
  name: 'Robin',
  itemName: 'Snacks'
}]

我可以更改哪行代码,以使合并的对象数组只包含我想要的键?

我试过这样做,但无济于事.

const mergedArray = arrOrder.map((order) => {
  const matchedObject = arrItem.find((item) => item.itemId === order.itemId);
  return { order.id, order.name, matchedObject.itemName };
});

推荐答案

问题是因为您使用的是价差运算符,默认情况下,它将包括所有属性.

如果您不希望这样做,则可以手动指定要包含的属性名称并为其赋值:

return {
  orderId: order.orderId,
  name: order.name,
  itemName: matchedObject.itemName
};

下面是一个完整的工作示例:

const arrOrder = [
  { orderId: 1, userId: 1, name: "Zack", itemId: 100 },
  { orderId: 2, userId: 2, name: "Robin", itemId: 200 }
];

const arrItem = [
  { itemId: 100, itemName: "Fruits", itemDescription: "Apple and Oranges" },
  { itemId: 200, itemName: "Snacks", itemDescription: "Potato Chips and Nuts" }
];

const mergedArray = arrOrder.map((order) => {
  const matchedObject = arrItem.find((item) => item.itemId === order.itemId);
  return {
    orderId: order.orderId,
    name: order.name,
    itemName: matchedObject.itemName
  };
});

console.log(mergedArray);

Javascript相关问答推荐

有Angular 的material .未应用收件箱中的价值变化

Cookie中未保存会话数据

仅针对RTK查询中的未经授权的错误取消maxRetries

未捕获错误:[]:getActivePinia()被调用,但没有活动Pinia.🍍""在调用app.use(pinia)之前,您是否try 使用store ?""

Chart.js 4.4.2,当悬停在一个数据点上时,如何在工具提示中拥有多个数据点/标签?

Javascript json定制

我在Django中的视图中遇到多值键错误

类构造函数不能在没有用With Router包装的情况下调用

将内容大小设置为剩余可用空间,但如果需要,可在div上显示滚动条

在开发期间,Web浏览器如何运行&qot;.jsx&qot;文件?

如何使用画布在另一个内部绘制一个较小但相同的形状,同时保持恒定的边界厚度?

如何在FiRestore中的事务中使用getCountFromServer

在JavaScript中,有没有一种方法可以迭代字符串的词法标记?

在JavaScript中将Base64转换为JSON

使用可配置项目创建网格

在HTML5画布上下文中使用putImageData时,重载解析失败

Angel Auth Guard-用户只有在未登录时才能访问登录页面,只有在登录时才能访问其他页面

如何使pdf.js上的文本呈现为可选?

无法在Adyen自定义卡安全字段创建中使用自定义占位符

JS/css:将数字输入的S函数和可调整大小的元素S函数绑定在一起