gpt4 book ai didi

javascript - 映射和过滤以按 id 用对象填充数组

转载 作者:行者123 更新时间:2023-11-30 08:23:26 25 4
gpt4 key购买 nike

我需要用对象填充 id 数组。换句话说,我有。 ID 数组:

var orderArray = ["5ace454a2b22e17597d0e694", "5acde7c0f7d2520e3b205971", "5ad2086bf05ad342dc723ea1"]

和对象数组:

var objectsArray = [ { _id: 5acde7c0f7d2520e3b205971,
name: 'Dinner',
restaurant: 5a68d8ea17d9e4308e6400c3,
created: 2018-04-11T10:47:28.957Z,
status: true,
products: [ [Object] ] },
{ _id: 5ace454a2b22e17597d0e694,
name: 'Test',
restaurant: 5a68d8ea17d9e4308e6400c3,
image:
{ _id: 5ad23ed177bcd07303f62899,
filename: 'rJKCR2k2f-1523728081111.jpeg',
destination: 'images',
binded: true },
created: 2018-04-11T17:26:34.186Z,
status: false,
products: [ [Object], [Object] ] },
{ _id: 5ad2086bf05ad342dc723ea1,
name: 'Test',
restaurant: 5a68d8ea17d9e4308e6400c3,
image: null,
created: 2018-04-14T13:55:55.449Z,
status: true,
products: [] } ]

您可以根据 ID 对对象数组进行排序...或者将 ID 数组映射到对象数组。可能我更喜欢第二种选择。但我的方法行不通

orderArray.map(id => objectsArray.filter(obj => obj._id == id))

结果应为:objectsArray 按 orderArray 中元素的顺序排序

解决方案:我几天前打开了这个问题:Merging 2 arrays with different value types

我也遇到了同样的问题。 orderArray 是对象数组(不是字符串),因此为了使其工作,我需要应用我之前找到的解决方案(Array.filter 和 Array.find 函数都运行良好):但以我的方式,只有在以下情况下它才会起作用:

order_array.map(String).map(e => objectsArray.find(a => a._id == e))
//as well as
order_array.map(String).map(e => objectsArray.filter(a => a._id == e))

最佳答案

map 第一个数组用第二个数组中的相应元素填充它:

var orderArray = ["5ace454a2b22e17597d0e694", "5acde7c0f7d2520e3b205971", "5ad2086bf05ad342dc723ea1"]

var objectsArray = [ { _id: '5acde7c0f7d2520e3b205971',
name: 'Dinner',
restaurant: '5a68d8ea17d9e4308e6400c3',
created: '2018-04-11T10:47:28.957Z',
status: true,
products: [ [Object] ] },
{ _id: '5ace454a2b22e17597d0e694',
name: 'Test',
restaurant: '5a68d8ea17d9e4308e6400c3',
image:
{ _id: '5ad23ed177bcd07303f62899',
filename: 'rJKCR2k2f-1523728081111.jpeg',
destination: 'images',
binded: true },
created: '2018-04-11T17:26:34.186Z',
status: false,
products: [ [Object], [Object] ] },
{ _id: '5ad2086bf05ad342dc723ea1',
name: 'Test',
restaurant: '5a68d8ea17d9e4308e6400c3',
image: null,
created: '2018-04-14T13:55:55.449Z',
status: true,
products: [] } ]

var sorted = orderArray.map((e) => { return objectsArray.find((a) => { return a._id == e})})

console.log(sorted)

关于javascript - 映射和过滤以按 id 用对象填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49835986/

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