javascript map函数用于删除逗号并保留唯一值

Bon*_*ard 3 javascript arrays object map-function

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

var items = ['mum, dad', 'uncle, dad', 'brother, sister'];
var clean = [];
clean = items.filter(function(item) {
  return item.split(',');
});
Run Code Online (Sandbox Code Playgroud)

问题是我没有得到预期的结果.我的clean输出与items输出相同.应该是这样的:

console.log(items) //  ['mum, dad', 'uncle, dad', 'brother, sister']
console.log(clean) //  ['mum', dad', 'uncle', dad', 'brother', sister']
Run Code Online (Sandbox Code Playgroud)

还有另外一点,我怎么才能得到唯一的值,正如你所看到的,一旦他们被逗号限制,就会重复一些值,比如 dad,我怎么只能保留一个呢?

Nen*_*car 6

您可以使用map()而不是过滤器和ES6 Set来仅返回唯一元素.

var items = ['mum, dad', 'uncle, dad', 'brother, sister'];
var clean = [...new Set([].concat(...items.map(e => e.split(', '))))]

console.log(clean)
Run Code Online (Sandbox Code Playgroud)

对于IE和其他旧版本的浏览器,您可以使用此解决方案.

var items = ['mum, dad', 'uncle, dad', 'brother, sister'];
var clean = [].concat.apply([], items.map(function(e) {
  return e.split(', ');
})).filter(function(e) {
  return !this[e] ? this[e] = 1 : false;
}, {})

console.log(clean)
Run Code Online (Sandbox Code Playgroud)