在Javascript中通过无序的ID数组过滤对象数组
这是一组书籍对象在Javascript中通过无序的ID数组过滤对象数组,javascript,arrays,Javascript,Arrays,这是一组书籍对象 const books=[ { "id": 1, "title": "NPR", "url": "https://www.npr.org" }, { "id": 2, "title": "Google Docs", "url": "https://docs.google.com/" }, { "title": "Fetch API Docs",
const books=[
{
"id": 1,
"title": "NPR",
"url": "https://www.npr.org"
},
{
"id": 2,
"title": "Google Docs",
"url": "https://docs.google.com/"
},
{
"title": "Fetch API Docs",
"url": "https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch",
"id": 3
},
{
"title": "Yahoo",
"url": "http://www.yahoo.com",
"id": 4
},
{
"title": "Google",
"url": "http://www.google.com",
"id": 5
}
]
和一个单独的ID数组
const selectedIds = [1, 5, 3]
使用javascript,如何将books数组过滤为只包含selectedds
(保持与selectedds
中相同的顺序)
我希望得到的最终结果:
selectedBooks = [
{
"id": 1,
"title": "NPR",
"url": "https://www.npr.org"
},
{
"title": "Google",
"url": "http://www.google.com",
"id": 5
},
{
"title": "Fetch API Docs",
"url": "https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch",
"id": 3
}
]
我当前的代码是这样的,但这保留了books
数组的顺序(即[1,3,5]):
往另一个方向走
selectedIds.map(id => books.find(b => b.id === id))
往另一个方向走
selectedIds.map(id => books.find(b => b.id === id))
const book=[{
id:1,
标题:“NPR”,
url:“https://www.npr.org"
},
{
id:2,
标题:“谷歌文档”,
url:“https://docs.google.com/"
},
{
标题:“获取API文档”,
url:“https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch",
身份证号码:3
},
{
标题:“雅虎”,
url:“http://www.yahoo.com",
身份证号码:4
},
{
标题:“谷歌”,
url:“http://www.google.com",
身份证号码:5
}
];
const selectedds=[1,5,3];
const-mapped=selectedIds.map(id=>{
返回books.find(book=>book.id==id);
});
console.log(映射)代码>
const book=[{
id:1,
标题:“NPR”,
url:“https://www.npr.org"
},
{
id:2,
标题:“谷歌文档”,
url:“https://docs.google.com/"
},
{
标题:“获取API文档”,
url:“https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch",
身份证号码:3
},
{
标题:“雅虎”,
url:“http://www.yahoo.com",
身份证号码:4
},
{
标题:“谷歌”,
url:“http://www.google.com",
身份证号码:5
}
];
const selectedds=[1,5,3];
const-mapped=selectedIds.map(id=>{
返回books.find(book=>book.id==id);
});
console.log(映射)代码>您确定得到的结果不正确。我在Chromium 77.0.3865.90和Firefox Quantum 69.0.1(64位)上测试了您的代码,它们似乎给出了正确的顺序。我只能假设您的const selectedds的顺序可以更改为1、3、5,以确保保留顺序。NVM,我读得太快了,你想保持所选数据的顺序。:)你确定你得到了错误的结果。我在Chromium 77.0.3865.90和Firefox Quantum 69.0.1(64位)上测试了您的代码,它们似乎给出了正确的顺序。我只能假设您的const selectedds的顺序可以更改为1、3、5,以确保保留顺序。NVM,我读得太快了,你想保持所选数据的顺序。:)