如果b为空(b = [])或者值如下,如何避免b.push(a);
添加重复项?
var a = ["username1", "1"];
var b = [ ["username1", "1"], ["username2", "2"] ];
b.push(a);
答案 0 :(得分:6)
您可以先使用some()
和every()
检查a
中是否存在b
,然后使用推送。
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)

答案 1 :(得分:1)
没有自动防止重复的方法,你应该自己检查一下。
检查代码段:
var a = ["username1", "1"];
var b = [ a, ["username2", "2"] ];
if(b.find(function(element) { return element == a })) {
b.push(a);
}
如果b
数组中的记录具有不同的标识,则应检查其中的值。
您可以按照以下方式执行此操作:
var a = ["username1", "1"];
var b = [ ["username1", "1"], ["username2", "2"] ];
if(b.find(function(element) { return element[0] == a[0] })) {
b.push(a);
}
答案 2 :(得分:1)
转换为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);