我使用 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])
有没有人见过这个,如果有,你能解释为什么会这样吗?
谢谢