我具有以下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,我如何只保留一个?

最佳答案

您可以使用map()而不是filter和ES6 Set来仅返回唯一元素。

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

console.log(clean)


对于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)

09-04 16:52