Edited at

JavaScriptでfilterしてmapを実行したい

More than 1 year has passed since last update.

配列にダブルクォートで囲われた動物達がいます。

重複をなくして、さらにダブルクォートを取り除きたい。普通にfilterとmapでやると

let animals = ['"cat"', '"dog"', '"cat"', '"bird"', '"dog"'];

// filterで重複を取り除いてからmapで文字列置き換え
animals = animals.filter(function(element, index, array) {
return array.indexOf(element) === index;
}).map(function(element) {
return element.replace(/"/g, '');
});
=> [ 'cat', 'dog', 'bird' ]

もうちょっとエレガントに書けないかと思い関数化してすっきり!

let unique = function(element, index, array) {

return array.indexOf(element) === index;
};

let replace = function(element) {
return element.replace(/"/g, '');
};

let animals = ['"cat"', '"dog"', '"cat"', '"bird"', '"dog"'];
animals = animals.filter(unique).map(replace);
=> [ 'cat', 'dog', 'bird' ]