我想在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);
});
但它仍然会返回重复值
答案 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)]);
})