gpt4 book ai didi

javascript - 通过匹配来自另一个数组的多个值来过滤数组

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

对象被添加到nodeArray[]中,一旦它们被选中,一些节点连接在一起,这些链接存储在linkArray[]中,每个对象保存节点连接的源ID和目标ID。

我需要过滤 linkArray[] 以便它只返回 sourcetarget 都在 nodeArray[] 中的对象

到目前为止,我没有浏览类似的问题:

var linkArray = [{
"conID": "100",
"source": "10",
"target": "11"
}, {
"conID": "101",
"source": "11",
"target": "12"
}, {
"conID": "102",
"source": "12",
"target": "13"
}, {
"conID": "103",
"source": "13",
"target": "14"
}, {
"conID": "386",
"source": "55",
"target": "32"
}];
var nodeArray = [{"id": "10"}, {"id": "11"}, {"id": "12"}];

function filterArray(array, filter) {
var myArrayFiltered = [];
for (var i = 0; i < array.length; i++) {
for (var j = 0; j < filter.length; j++) {
if (array[i].source === filter[j].id) {
myArrayFiltered.push(array[i]);
}
}
}
return myArrayFiltered;
}

myArrayFiltered = filterArray(linkArray, nodeArray);

document.body.innerHTML = '<pre>'+ JSON.stringify(myArrayFiltered, null, 4) +'</pre>';

我已经尝试添加到 if 语句以包含目标 ID,但我不确定我是否理解正确。

结果是返回所有 sourcenodeArray[] 中的 id 匹配的链接。

[
{
"conID": "100",
"source": "10",
"target": "11"
},
{
"conID": "101",
"source": "11",
"target": "12"
},
{
"conID": "102",
"source": "12",
"target": "13"
}
]

我需要帮助的是过滤数组,以便它只返回 sourcetarget ID 都在 nodeArray[] 中的对象.

选择节点 10、11 和 12 后所需的结果将只有 2 个对象,因为节点 13 不在选择中。

[
{
"conID": "100",
"source": "10",
"target": "11"
},
{
"conID": "101",
"source": "11",
"target": "12"
}
]

希望这很清楚,谢谢!

最佳答案

你可以试试这个

var linkArray = [{
"conID": "100",
"source": "10",
"target": "11"
}, {
"conID": "101",
"source": "11",
"target": "12"
}, {
"conID": "102",
"source": "12",
"target": "13"
}, {
"conID": "103",
"source": "13",
"target": "14"
}, {
"conID": "386",
"source": "55",
"target": "32"
}];
var nodeArray = [{
"id": "10"
}, {
"id": "11"
}, {
"id": "12"
}];

function filterArray(array, filter) {
// Get all the required ids
var ids = filter.map(function(f) {
return f.id;
});
return array.filter(function(a) {
// Check if both source and target are present in list of ids
return ids.indexOf(a.source) !== -1 && ids.indexOf(a.target) !== -1;
});
}

var myArrayFiltered = filterArray(linkArray, nodeArray);
console.log(myArrayFiltered)

更新

删除了 forEach + push 并使用了 filter

关于javascript - 通过匹配来自另一个数组的多个值来过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44240550/

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