jquery.grep意外行为

时间:2012-09-05 16:02:14

标签: javascript jquery

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

E.g。

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

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

我发现这实际上是通过相同的名称创建一个单独的对象。换句话说,执行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])​

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

由于

0 个答案:

没有答案