1

我使用 jquery.grep 遇到了一个有趣的发现,想知道是否有人知道为什么会这样。在我的代码中,我使用 grep 从数组中过滤掉某些项目,然后将结果分配回原始数组以进行更多过滤。

例如

orderedGroups = jquery.grep(orderedGroups, function{}` ...)

期望的结果是,其父 id 是数组中另一个项目的 id 的项目被过滤掉——只留下不匹配的(父)项目。

我发现这实际上创建了一个同名的单独对象。换句话说,执行 a console.log(orderedGroups[1]), 显示一个未显示在console.log(orderedGroups)

这是我的代码:

var a = ['a', '1', '0']; // represents [name, id, parent id]
var b = ['b', '2', '1'];
var c = ['c', '3', '0'];
var d = ['d', '4', '2'];
var e = ['e', '5', '0'];
var f = ['f', '6', '2'];

var groups = [a, b, c, d, e, f];

var orderedGroups = groups;
for (var i = 0; i < groups.length; i++) {
    for (var sg = 0; sg < groups.length; sg++) {
        if (groups[i][1] == groups[sg][2]) {
            orderedGroups = jQuery.grep(orderedGroups, function(value) {
                return value != groups[sg];
            });
        }
    }
}

console.log(orderedGroups)
console.log(orderedGroups[1])​

有没有人见过这个,如果有,你能解释为什么会这样吗?

谢谢

4

0 回答 0