回答編集履歴
2
コードを修正
answer
CHANGED
@@ -1,13 +1,17 @@
|
|
1
1
|
こんな感じでも出来ました。重複している値を配列化して、それらをピンポイントで削除するアプローチですね。
|
2
2
|
|
3
|
-
```
|
3
|
+
```javascript
|
4
4
|
var arr = [{a:1,b:"h"},{a:1,b:"e"},{a:2,b:"l"},{a:3,b:"l"},{a:1,b:"o"}];
|
5
5
|
|
6
6
|
var deleteDuplicateVal = function(array, key) {
|
7
7
|
var delArr = array.map(function(e, i) {
|
8
8
|
return e[key];
|
9
9
|
}).filter(function(e, i, array) {
|
10
|
+
/* 重複するものを抽出 */
|
10
11
|
return array.indexOf(e) !== i;
|
12
|
+
}).filter(function(e, i, array){
|
13
|
+
/* 抽出した中での重複削除 */
|
14
|
+
return array.indexOf(e) === i;
|
11
15
|
});
|
12
16
|
|
13
17
|
console.log(delArr); // ["l"]
|
1
コードの修正
answer
CHANGED
@@ -12,11 +12,8 @@
|
|
12
12
|
|
13
13
|
console.log(delArr); // ["l"]
|
14
14
|
|
15
|
-
var result = array.
|
15
|
+
var result = array.filter(function(e, i) {
|
16
|
-
|
16
|
+
return delArr.indexOf(e[key]) === -1;
|
17
|
-
delete e[key];
|
18
|
-
}
|
19
|
-
return e;
|
20
17
|
});
|
21
18
|
|
22
19
|
return result;
|