过滤/删除重复变量

时间:2019-02-07 15:09:59

标签: javascript arrays

我试图在我的JS脚本中添加功能,以对返回的值进行重复数据删除。我的原始脚本在这里:

try{
var productList = dataLayer.basket.products.map(function(product) {
    return product.travelType;
});

return productList.join('|');
  }
catch(err){}

从类似Bus|Bus|Train|Car|Bus的数组中返回值

我要尝试的是脚本的另一部分,该部分将清除这些值并删除重复数据。例如,上面的脚本只会显示“ bus”一次,例如Bus|Train|Car

我尝试使用过滤器执行此操作,但返回的是空值:

try{
var productList = dataLayer.basket.products.map(function(product) {
    return product.travelType;
});
  
var filteredArray = productList.filter(function(item, pos){
    return productList.indexOf(item)=== pos;
  });
  
return filteredArray.join('|');
  }
catch(err){}

任何指导将不胜感激。

谢谢, M

5 个答案:

答案 0 :(得分:1)

要过滤数组中的重复项:

const array = ['toto', 'tata', 'tutu', 'toto'];
const filteredArray = [...new Set(array)];

console.log(filteredArray);

答案 1 :(得分:0)

const remove_duplicates = (arr) => {
    let setArr = new Set(arr);
    let values = setArr.values();
    return Array.from(values);
}
const example = ['Bus', 'Bus', 'Car', 'Bike'];

console.log(remove_duplicates(example).join('|'));

答案 2 :(得分:0)

我认为this question中的最高答案就是您要搜索的内容。只需将其应用于您的productList即可,它应该摆脱所有重复的值。

编辑:糟糕,我刚刚看到您已经这样做了。但是您的代码应该以这种方式工作,我只是在控制台中对其进行了尝试,并且按预期方式工作。空值必须由程序的其他部分引起。

答案 3 :(得分:0)

您的代码可以正常使用,该错误必须出在您的数据中或您未发布的代码的另一部分中:

const dataLayer = {
  basket:{products:[
      {travelType:'a'},
      {travelType:'b'},
      {travelType:'c'},
      {travelType:'b'},
      {travelType:'c'},
      {travelType:'a'},

  ]}
}

var productList = dataLayer.basket.products.map(function(product) {
  return product.travelType;
});
  
var filteredArray = productList.filter(function(item, pos){
  return productList.indexOf(item)=== pos;
});
  
console.log(filteredArray.join('|'));

答案 4 :(得分:0)

使用现代javascript:

let arr = ['Bus', 'Bus', 'Train', 'Car', 'Bus'];
let filteredArr= [... new Set(arr)]; 
let result = filteredArr.join('|');