Javascript索引数组问题

Javascript indexing array issue

本文关键字:问题 数组 索引 Javascript      更新时间:2023-09-26

嗨,我有一个包含以下数字的数组,但是当我循环遍历eachNode函数(迭代13次)时,它将所有列表元素重复13次。我测试了所有东西,但它仍然产生一个错误,我执行for循环正确吗?

list[61,67,78]
var len = list.length;
fd.graph.eachNode(function (node) { // loops thru all node id's in graph (13)
    for (var i = 0; i < len; ++i) {
        if (i in list) {
            var nody = list[i]; // I put the number in a variable
            var nodess = fd.graph.getNode(nody); //this takes the number and matches it with a node id, it "odjectify" it
            if (node.id != nodess.id) { //  if the list nodes are not the same
                node.setData('alpha', 0); //
                node.eachAdjacency(function (adj) { // this make the unmatched nodes disappear
                    adj.setData('alpha', 0, 'end');
                });
            }
        }
    }
});

这一行不需要:

if (i in list)

如果in关键字的右操作数包含其左操作数指定的属性,则返回true。当对数组使用此方法时,它会返回意想不到的结果。这个关键字的行为在这个上下文中是不重要的,所以你应该把它去掉。

此外,您需要像这样创建list数组:

var list = [61, 67, 78];

…然而,当我循环通过eachNode(迭代13次)时,它重复所有列表元素13次

它没有,它实际上在eachNode上迭代13次。您还创建了一个for循环,它将遍历list数组的长度。


既然你已经给了我更多你想要的细节,这里是更新的代码。我希望它对你有用:

fd.graph.eachNode(function (node) {
    var flag = false;
    for (var i = 0; i < len; ++i)
    {
        var nody = list[i];
        var nodess = fd.graph.getNode(nody);
        if (node.id == nodess.id) {
            flag = true; break;
        }
    }
    if (flag)
    {
        node.setData('alpha', 0);
        node.eachAdjacency(function (adj) {
           adj.setData('alpha', 0, 'end');
        });
    }
});

这是设计的行为:

循环遍历图形(如你所说的13次),然后在每次迭代中循环遍历数组(3个元素)。

如果你只想在数组上循环一次,只需将其移出外部循环