gpt4 book ai didi

javascript - 合并对象数组,修改一些结果条目

转载 作者:行者123 更新时间:2023-11-30 09:17:15 24 4
gpt4 key购买 nike

我有以下代码,它采用 JavaScript 中的 2 个对象数组并比较它们并合并内容,返回第一个数组中的所有对象,以及第二个中具有不在第一个中的 ID 的所有对象。

但是对于来自第二个数组的那些项目,我想修改它在新数组中的条目以仅包含某些属性(例如,id 和 make)并添加一个新的占位符属性(例如,类型:“car ”)。我相信这会使用 map 功能,但我似乎无法让它工作。

    var cars1 = [
{id: 1, make: "Ford", model: "F150", year: 2002},
{id: 3, make: "Chevy", model: "Tahoe", year: 2003},
];

var cars2 = [
{id: 2, make: "Kia", model: "Optima", year: 2001},
{id: 4, make: "Nissan", model: "Sentra", year: 1982},
];

const cars1IDs = new Set(cars1.map(({ id }) => id));
const combined = [
...cars1,
...cars2.filter(({ id }) => !cars1IDs.has(id))
.map(cars2 => cars2.id)
];
combined.sort(({ id: aId }, {id: bId }) => aId - bId);
console.log(combined);

我希望组合数组以以下内容结束:

var combined = [
{id: 1, make: "Ford", model: "F150", year: 2002},
{id: 2, make: "Kia", type: "car"},
{id: 3, make: "Chevy", model: "Tahoe", year: 2003},
{id: 4, make: "Nissan", type: "car"},
];

但它最终变成了:

var combined = [
{id: 1, make: "Ford", model: "F150", year: 2002},
{id: 3, make: "Chevy", model: "Tahoe", year: 2003},
2,
4
];

最佳答案

.map , 你应该提取 idmake属性,并返回一个仅包含这些属性加上 type 的对象的 car :

var cars1 = [
{id: 1, make: "Ford", model: "F150", year: 2002},
{id: 3, make: "Chevy", model: "Tahoe", year: 2003},
];

var cars2 = [
{id: 2, make: "Kia", model: "Optima", year: 2001},
{id: 4, make: "Nissan", model: "Sentra", year: 1982},
];

const cars1IDs = new Set(cars1.map(({ id }) => id));
const combined = [
...cars1,
...cars2.filter(({ id }) => !cars1IDs.has(id))
.map(({ id, make }) => ({ id, make, type: 'car' }))
];
combined.sort((a, b) => a.id - b.id);
console.log(combined);

关于javascript - 合并对象数组,修改一些结果条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54194226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com