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