如何告诉push以避免附加重复值?

时间:2017-01-10 11:10:34

标签: javascript jquery

如果b为空(b = [])或者值如下,如何避免b.push(a);添加重复项?

var a = ["username1", "1"];
var b = [ ["username1", "1"], ["username2", "2"] ];
b.push(a);

3 个答案:

答案 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);