[英]How to retrieve from one array using the value in another array javascript
我有一個名為x
的數組,如下所示。
x = [
{ id: 1, content: 'abc' },
{ id: 2, content: 'cde' },
{ id: 3, content: 'xyz' }
]
我有另一個像這樣的數組y
。
y = [1, 3]
我想通過將x
的 id 映射到y
中的值來從x
獲取所有數據。 所以我的 output 將如下所示。
[
{ content: 'abc' },
{ content: 'xyz' }
]
如何在 Javascript 中實現這一點?
您可以使用array.filter
(+一些與其他數組比較)以及array.map
let x=[ {id: 1, content:'abc'}, {id: 2, content:'cde'}, {id: 3, content:'xyz'}]; let y=[1,3]; let result = x.filter(obj => y.some(yy => yy === obj.id)).map(({content}) => ({content})); console.log(result); //or let result2 = x.filter(obj => y.some(yy => yy === obj.id)).map(x => x.content); console.log(result2);
使用 Array.filter() 和 Array.map() 您可以獲得結果。
認為:
const x = [
{id: 1, content:'abc'},
{id: 2, content:'cde'},
{id: 3, content:'xyz'},
];
const y = [1,3];
const result = x.filter(item => y.includes(item.id)).map(item => {
return {
content: item.content
}
});
console.log(result);
Output:
{content:'abc'}
{content:'xyz'}
您可以為此使用數組減少:
const x = [ { id: 1, content: 'abc' }, { id: 2, content: 'cde' }, { id: 3, content: 'xyz' } ] const y = [ 1, 3 ] const result = x.reduce((a,{id,content})=> { if (y.some(eY=>eY=== id)) a.push({ content } ) return a },[]) console.log( result )
for 循環可用於提取具有匹配 ID 的元素。
這是一個使用 for 循環的工作演示:
<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
</head>
<body>
<button onclick="myFunction()">Find elements</button>
<p id="result"></p>
<script>
var x = [
{id: 1, content:'abc'},
{id: 2, content:'cde'},
{id: 3, content:'xyz'}
]
var y = [1, 3]
var result = []
function myFunction() {
for(let i = 0; i < x.length; i++) {
if( y.indexOf(x[i].id) >= 0 ) {
// Add content of matching elements to result array
result.push(x[i].content)
}
}
document.getElementById("result").innerHTML = result
}
</script>
</body>
</html>
Output:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.