3 回答
TA贡献1862条经验 获得超7个赞
你可以使用一个Map和map
Map使用dateas 键从第二个数组创建一个
循环遍历第一个数组,如果日期可用于对应的Mapper使用值,否则使用当前元素的价格Mapperdate
let a = [{"date": "2019-10-07","price": "1313.01"},{"date":"2019-10-08","price": "1276.21"},{"date": "2019-10-09","price": "1257.75"}]
let b = [{ "date": "2019-10-07","price": "2000.10"},{"date": "2019-10-09","price": "1356.75"}]
let mapper = new Map(b.map(({ date, price }) => [date, price]))
let final = a.map(({ date, price }) => {
return mapper.has(date) ? mapper.get(date) : price
})
console.log(final)
TA贡献1817条经验 获得超14个赞
您可以将它们转换为对象,然后合并它们并取值:
const toObject = array => Object.fromEntries(
array.map(
({date,price}) => [date, price]
)
);
const prices = Object.values(
Object.assign(
toObject(array1),
toObject(array2)
)
);
您可以使用这种方法组合任意数量的数组:
const prices = Object.values(
Object.assign(
...arrays.map(toObject)
)
);
它将始终采用具有相同日期的最后一项。
TA贡献1777条经验 获得超10个赞
使用mapand find,如果从arr2is 中找到结果undefined将使用 from 的值arr1。
const arr1 = [{
"date": "2019-10-07",
"price": "1313.01"
}, {
"date": "2019-10-08",
"price": "1276.21"
}, {
"date": "2019-10-09",
"price": "1257.75"
}];
const arr2 = [{
"date": "2019-10-07",
"price": "2000.10"
}, {
"date": "2019-10-09",
"price": "1356.75"
}];
const result = arr1.map((item) => (arr2.find((item2) => item.date === item2.date) || item).price);
添加回答
举报