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,我怎么只能保留一个呢?
您可以使用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)