删除重复值数组ionic3

时间:2017-10-26 10:13:49

标签: javascript arrays angularjs ionic-framework

我想在Ionic3中删除存储阵列中的重复值

this.storage.get('thestations').then((val) => { 

           for(let i =0;i<val.length;i++){
            if(this.newarray.indexOf(this.newarray) == -1) {
            this.newarray.push(val[i]);
            } 
                console.log(newarray);

      });

但它仍然会返回重复值

4 个答案:

答案 0 :(得分:4)

使用设置

var val = ["Banana", "Orange", "Apple", "Mango", "Mango"];
var newarray =  Array.from(new Set(val));

使用Reduce检查

var val = ["Banana", "Orange", "Apple", "Mango", "Mango"];
var newarray = val.reduce(function(res, ele) {
    if(res.indexOf(ele)==-1)
       res.push(ele);
return res;
}, [])

答案 1 :(得分:2)

我不知道,您是否解决了您的问题,但是我为您提供了最有效的答案之一。

JavaScript为我们提供了 lodash 库。 有关完整的文档,请访问Lodash Documentation

Lodash为我们提供了数千种内置函数,例如filter,unique,isEqual等。

步骤1: 您只需要通过以下命令安装lodash的npm软件包即可。

  

npm install lodash --save

步骤2: 将依赖项导入您的组件文件中。

import * as lodash from 'lodash';

第3步: 现在考虑您有一个名为abcArr = [5,10,8,11,10,8]的数组; 您想忽略所有重复的数字。

使用以下代码获取预期的输出。

let abcArr = [5,10, 8, 11, 10, 8];
let uniqueArr = []; 
uniqueArr = lodash.uniqWith(abcArr, lodash.isEqual);

因此,您将获得如上的预期解决方案。希望如此,它将对您有所帮助。

答案 2 :(得分:1)

您必须使用以下功能

var val = ["Banana", "Orange", "Apple", "Mango", "Mango"];
var newarray = [];

for(let i=0; i < val.length; i++)
{
    if(newarray.indexOf(val[i]) == -1)
        newarray.push(val[i]);
}
console.log(newarray);

</script>

您必须根据您的要求更改val变量。

答案 3 :(得分:1)

单线: [...new Set(["Banana", "Orange", "Apple", "Mango", "Mango"])]

this.storage.get('thestations').then(val => {  
  console.log('with duplicates',val);   
  console.log('without duplicates',[...new Set(val)]);
})