我正在使用if(!(results[count].m._id in usedIdArray))
来确定ID值是否已存在于数组中。该if语句处于for循环中,该循环遍历results
中的21个节点。 usedIdArray
只是一个整数数组,而results[count].m._id
是一个数字。 results[count].m
通常类似于以下内容:
Node {
_id: 79,
labels: [ 'Block' ],
properties:
{ blockID: '674511',
upvotes: '4',
x: '771.2391282095244',
y: '224.80278118474385',
type: 'link',
url: 'https://stackoverflow.com' } }
usedIdArray中还有其他重复的数字,而
if(!(results[count].m._id in usedIdArray))
似乎可以检测到这些数字。出于某种原因,只有_id
为79和16的那些节点才引起问题。我知道有重复的3、1和其他几个数字。当我跑步时:console.log(results[count].m._id);
console.log(usedIdArray);
我得到:
3
[ 1 ]
79
[ 1, 3, 2, 4, 13, 14, 16 ]
16
[ 1, 3, 2, 4, 13, 14, 16, 79, 17 ]
79
[ 1, 3, 2, 4, 13, 14, 16, 79, 17, 16, 18 ]
79
[ 1, 3, 2, 4, 13, 14, 16, 79, 17, 16, 18, 79, 19 ]
79
[ 1, 3, 2, 4, 13, 14, 16, 79, 17, 16, 18, 79, 19, 79, 20 ]
79
[ 1, 3, 2, 4, 13, 14, 16, 79, 17, 16, 18, 79, 19, 79, 20, 79, 21 ]
[ 1, 3, 2, 4, 13, 14, 16, 79, 17, 16, 18, 79, 19, 79, 20, 79, 21, 79, 22, 23, 24 ]
...最后一行是完整的
usedIdArray
。我尝试将id值解析为整数和字符串,无济于事。 最佳答案
问题在于in
运算符,如果指定的属性位于指定的对象或其原型链中,则该运算符返回true。
在docs中阅读更多内容
您可以使用array.includes
函数测试列表中是否包含元素。
var list = ['one', 'two', 'three', 'fourth'];
console.log('one' in list); // -> false
console.log(list.includes('one')); // -> true