我具有以下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)