首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JavaScript中从数组中删除重复的对象(字符串)

如何在JavaScript中从数组中删除重复的对象(字符串)
EN

Stack Overflow用户
提问于 2018-05-26 04:59:30
回答 8查看 71关注 0票数 1

我有两个带有相同对象的json数组,我想要的是从这两个json中得到一个不包含重复值的json,例如这是我的json:

代码语言:javascript
复制
json1=["one","two"];
json2=["one","two","three","four"];

结果必须是:

代码语言:javascript
复制
result=["three","four"]

你知道怎么做吗,谢谢

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2018-05-26 05:13:04

代码语言:javascript
复制
function myFilter(arraySmall, arrayBig){
  var result = [];

  for (var i = 0; i < arrayBig.length; i++) {
    if (arraySmall.indexOf(arrayBig[i]) === -1){ //ie. if item not exists in arraySmall
      result.push(arrayBig[i]);
    }
  }

  return result;
}

你可以直接调用myFilter(json1, json2);

票数 -2
EN

Stack Overflow用户

发布于 2018-05-26 05:04:43

使用reduce和filter函数的解决方案:

代码语言:javascript
复制
const json1 = ["one","two"];
const json2 = ["one","two","three", "four"];

const result = json2
  .reduce((acc, cur) => acc.indexOf(cur) > -1 ? acc : acc.concat(cur), json1)
  .filter(item => json1.indexOf(item) === -1 || json2.indexOf(item) === -1);

console.log(result); // ["three", "four"]
票数 0
EN

Stack Overflow用户

发布于 2018-05-26 05:08:34

以下是代码,这是一个函数,它基本上减去2数组并返回结果数组

a1和a2是2个阵列

A是一个空数组,它在所有的a1index中都有真值

a1 = 1,4,5;a= 0,1,0,0,1,1;

1= true,如下所示

现在,我们检查id a中是否存在任何a2index

如果a2 = 1,3;

那么a[a2atanyindex]将是a= 0,1,0,0,1,1;

..........................................................^ 1,如果发生这种情况,请删除该元素

将剩余的元素添加到diff数组中,diff数组是2数组的减去,也就是您需要的答案

代码语言:javascript
复制
function arr_diff(a1, a2) {

    var a = [], diff = [];

    for (var i = 0; i < a1.length; i++) {
        a[a1[i]] = true;
    }

    for (var i = 0; i < a2.length; i++) {
        if (a[a2[i]]) {
            delete a[a2[i]];
        } else {
            a[a2[i]] = true;
        }
    }

    for (var k in a) {
        diff.push(k);
    }

    return diff;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50536765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档