编辑:扩展已接受的答案(删除重复条目):
["cat, Kitchen", "dog", "Kitchen, dog", "Kitchen"].join(",").split(",").
map(function(entry){return entry.trim();}).
filter(function(entry, i, a) { return a.indexOf(entry) === i; });
我通过一系列转换解决了它,不需要 jQuery。
不过,不能更好地命名它,因为我不知道真正的交易是什么。
function doItsThing (crazyArray) {
function toArrays (entry) {
return entry.split(',');
}
function toAFlatArray (arrays, entry) {
return arrays.concat(entry);
}
function trim (entry) {
return entry.trim();
}
function dedupe (entry, index, array) {
return array.indexOf(entry) == index;
}
return crazyArray.
map(toArrays).
reduce(toAFlatArray, []).
map(trim).
filter(dedupe);
}
doItsThing(["cat, Kitchen", "dog", "Kitchen, dog", "Kitchen"])
或者,如果你希望它全部内联(虽然不那么可读,与上述相比,imo):
function doItsThing (crazyArray) {
return crazyArray.
map(function (entry) {
return entry.split(',');
}).
reduce(function (collection, entry) {
return collection.concat(entry);
}, []).
map(function (entry) {
return entry.trim();
}).
filter(function (entry, index, collection) {
return collection.indexOf(entry) == index;
});
}
doItsThing(["cat, Kitchen", "dog", "Kitchen, dog", "Kitchen"])
当然可以改进,但这就是想法。