我试图在我的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
答案 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('|');