我有一个nodes_object
数组,它具有以下类型的结构:
nodes_object = {
1: {
source: '001',
name: 'A',
target: '004',
name: 'B'
},
2: {
source: '003',
name: 'C',
target: '001',
name: 'A'
},
}
然后我还有一个数组sorted
,其结构如下:
sorted = {
1: {
val: '001',
count: '100'
},
2: {
val: '003',
count: '80'
}
我需要创建一个函数,该函数将通过nodes_object
重复,检查source
和target
是否包含在sorted
{{ 1}}参数,如果是,则继续进行。
到目前为止,我想出了下面的函数,它首先通过val
重复,然后通过nodes_object
重申,看看其中是否存在任何元素,但我想知道如果有更快,更有效的方法吗?
谢谢!
sorted
答案 0 :(得分:3)
首先,要创建数组,请使用[]
,而不是{}
。所以它应该是:
nodes_object = [
{
source: '001',
name: 'A',
target: '004',
name: 'B'
},
{
source: '003',
name: 'C',
target: '001',
name: 'A'
},
];
,同样适用于sorted
。
创建一个对象,其对象是您要测试的val
个对象。
hash = {};
for (var k = 0; k < sorted.length; k++) {
hash[sorted[k]] = true;
}
然后,您可以使用in hash
来测试sorted
中是否找到了某些内容:
var sourcein, targetin;
for (var i = 0; i < nodes_object.length; i++) {
sourcein = nodes_object[i].source in hash;
targetin = nodes_object[i].target in hash;
if (sourcein && targetin) {
...
}
}