1

私はjquery.grepを使用して興味深い発見に遭遇し、なぜこれが起こっているのか誰かが知っているかどうか疑問に思いました。私のコードでは、grepを使用して配列から特定のアイテムを除外し、さらにフィルタリングするために結果を元の配列に割り当てています。

例えば

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])​

誰かがこれを以前に見たことがありますか?もしそうなら、なぜこれが起こっているのか説明できますか?

ありがとう

4

0 に答える 0