javascript映射函数,用于去除逗号并保持唯一值

javascript映射函数,用于去除逗号并保持唯一值,javascript,arrays,object,map-function,Javascript,Arrays,Object,Map Function,我有下面的map函数来去除对象中每个元素的逗号(如果存在) var items = ['mum, dad', 'uncle, dad', 'brother, sister']; var clean = []; clean = items.filter(function(item) { return item.split(','); }); 问题是我没有得到预期的结果。我的clean输出与items输出相同。 应该是这样的: console.log(items) // ['mum, dad

我有下面的map函数来去除对象中每个元素的逗号(如果存在)

var items = ['mum, dad', 'uncle, dad', 'brother, sister'];
var clean = [];
clean = items.filter(function(item) {
  return item.split(',');
});
问题是我没有得到预期的结果。我的
clean
输出与
items
输出相同。 应该是这样的:

console.log(items) //  ['mum, dad', 'uncle, dad', 'brother, sister']
console.log(clean) //  ['mum', dad', 'uncle', dad', 'brother', sister']

还有一点,我怎样才能只得到唯一的值,正如你所看到的,一旦它们被去掉逗号,一些值就会重复,比如
dad
,我怎样才能只保留一个值呢?

你使用的是
filter
而不是
map

使用
map
将返回数组数组。如果ES6不是一个选项,您可以将其合并到单个阵列中并删除重复项,如下所示:

var items = ['mum, dad', 'uncle, dad', 'brother, sister'];
var clean = [];
clean = items.filter(function(item) {
 return item.split(',');
});
var merged = [].concat.apply([], clean);
var unique = arr.filter(function(elem, index, self) {
  return index == self.indexOf(elem);
})
您可以使用
map()
而不是filter和ES6
Set
只返回唯一的元素

var items=[“妈妈、爸爸”、“叔叔、爸爸”、“兄弟、姐妹”];
var clean=[…新集合([].concat(…items.map(e=>e.split(','))))]

console.log(clean)
过滤器只返回那些对于特定函数值为true的元素。如果您想对每个项目进行一些操作,那么您必须选择map。尽量简单,只需映射每个元素,将其拆分,然后将其附加到数组clean中。让我们看看这段简单的代码

函数uniqueArray2(arr){
var a=[];

对于(var i=0,l=arr.length;iCheckout:即使你的建议应该得到实施,也不会过滤掉重复的内容。这很好,但我在IE浏览器中遇到了一个错误!你能给出IE支持的普通javascript中的等效内容吗?很好,但如何删除重复的值?我为unique array添加了一个简单的js函数,因此它可以在所有浏览器中运行。