从阵列内的阵列中删除重复项

时间:2019-04-01 01:14:58

标签: javascript arrays reactjs

1-在以下代码段中,我的数组包含以下项目     有些项目是重复的,都是数组中的数组

arr[0] = ["Family Practice"]
arr[1] = ["Family Practice", "General Practice"]
arr[2] = ["Family Practice", "General Practice", "Geriatrics"]
arr[3] = ["Family Practice"]

如何删除重复项并返回数组中的唯一项。

2-使用ex for ex将项目添加到数组中时。

function(items) {
    arr.push(items)
}

每次更改项目时,数组项目也会更改。我如何在不对数组进行任何修改的情况下使数组不可变,而不管项目是否更改。

2 个答案:

答案 0 :(得分:0)

这是您可以执行此操作的方法。当然,有些人会说您可以扩展Array原型,这样它可以无处不在,但这是您的选择。此解决方案不会修改现有类型。


var arr  = [];

    arr[0] = ["Family Practice"]
    arr[1] = ["Family Practice", "General Practice"]
    arr[2] = ["Family Practice", "General Practice", "Geriatrics"]
    arr[3] = ["Family Practice"]

function makeUunique (collection) {
    return collection.reduce(function(rv,item) {
        if(!rv.includes(item)) {
            rv.push(item);
        }
        return rv;
    },[]);
};

var unique = makeUunique(arr.reduce(function(rv,item) {
    rv = rv.concat(item);
    return rv;
},[]));

console.log(unique);

答案 1 :(得分:-1)

您可以在使用push之前检查元素是否存在。解决此问题的方法很多,但一个简单的解决方案可能是:

Array.prototype.pushUnique = function pushUnique(item) {
  if (this.indexOf(item) === -1) {
    this.push(item);
  }
}

// Then use it...
const arr = [];

arr.pushUnique("Family Practice");
// arr = ["Family Practice"]

arr.pushUnique("General Practice");
// arr = ["Family Practice", "General Practice"]

arr.pushUnique("Family Practice");
// arr = ["Family Practice", "General Practice"]

不确定是否能满足您的要求,但通常最好的选择是在添加到数组之前只使用indexOfincludes