避ける方法b.push(a);
bが空(b = [])のときに重複を追加するか、以下のような値がありますか?重複値を追加するのを避けるためにpushを呼び出す方法は?
var a = ["username1", "1"];
var b = [ ["username1", "1"], ["username2", "2"] ];
b.push(a);
避ける方法b.push(a);
bが空(b = [])のときに重複を追加するか、以下のような値がありますか?重複値を追加するのを避けるためにpushを呼び出す方法は?
var a = ["username1", "1"];
var b = [ ["username1", "1"], ["username2", "2"] ];
b.push(a);
あなたはa
がb
に存在するかどうかを確認してからプッシュを使用するsome()
とevery()
最初に使用することができます。
var a = ["username1", "1"];
var b = [ ["username1", "1"], ["username2", "2"] ];
var check = b.some(function(e) {
return a.length == e.length && a.every(function(c) {
return e.includes(c)
})
})
if (!check) b.push(a);
console.log(b)
重複を防ぐことのない自動的な方法はありません、あなたは彼らのために自分でチェックする必要があります。
スニペットを確認します。
var a = ["username1", "1"];
var b = [ a, ["username2", "2"] ];
if(b.find(function(element) { return element == a })) {
b.push(a);
}
レコードがb
配列に異なるIDを持っている場合は、その中の値をチェックする必要があります。
あなたは次のようにそれを行うことができます。
var a = ["username1", "1"];
var b = [ ["username1", "1"], ["username2", "2"] ];
if(b.find(function(element) { return element[0] == a[0] })) {
b.push(a);
}
これは動作しません。なぜなら '=='はアイデンティティをチェックし、2つのオブジェクトを比較するときは等価でないからです。 – Thomas
あなたが正しいです、この場合、 'a'は' b'配列の中になければなりません。私はあなたが説明している場合のために私の答えを更新しました。 –
JSON文字列に変換し、配列を比較します。
var a = ["username1", "1"];
var a1 = ["username3", "1"];
var b = [
["username1", "1"],
["username2", "2"]
];
Array.prototype.pushCustom = function(item) {
if (this.every(function(v) {
return JSON.stringify(v) != JSON.stringify(item);
}))
this.push(item);
};
b.pushCustom(a);
b.pushCustom(a1);
console.log(b);
プッシュする前にそれを確認してください。 – Jai