質問編集履歴

2

for文でグルグル回したら一応動いたので追記。でもまだ無駄が多い気がします。。

2016/07/03 05:45

投稿

leila
leila

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,12 @@
1
1
  二次元配列で、中の配列の特定keyに対するvalueが重複していた時に
2
2
 
3
3
  そのvalueを持つもの全てを削除したいです。
4
+
5
+
6
+
7
+ 少しコード直してみて、動くには動いたのですが
8
+
9
+ とても無駄が多いように思っているので良い方法が知りたいです。
4
10
 
5
11
 
6
12
 
@@ -38,7 +44,7 @@
38
44
 
39
45
 
40
46
 
41
- ↓↓重複するbを探して度抜出しところ
47
+ ↓↓一応これでできたけど、無駄がすごく多いきがする...
42
48
 
43
49
  ```JavaScript
44
50
 
@@ -64,6 +70,28 @@
64
70
 
65
71
  });
66
72
 
73
+
74
+
75
+ var compArr = [];
76
+
77
+ for(i=0; i<arr.length; i++){
78
+
79
+ var flg = false;
80
+
81
+ for(j=0; j<dubble.length; j++){
82
+
83
+ if(arr[i]["b"] == dubble[j]){
84
+
85
+ flg = true;
86
+
87
+ }
88
+
89
+ }
90
+
91
+ if(!flg) compArr.push(arr[i]);
92
+
93
+ }
94
+
67
95
  ```
68
96
 
69
97
 

1

コメントいただいた、重複しているbが何かを取り出すところまで追記しました!

2016/07/03 05:45

投稿

leila
leila

スコア13

test CHANGED
File without changes
test CHANGED
@@ -38,6 +38,36 @@
38
38
 
39
39
 
40
40
 
41
+ ↓↓重複するbを探して一度抜き出したところ
42
+
43
+ ```JavaScript
44
+
45
+ var arr = [{a:1,b:"h"},{a:1,b:"e"},{a:2,b:"l"},{a:3,b:"l"},{a:1,b:"o"}]
46
+
47
+
48
+
49
+ // 一度bだけ取り出して、重複しているものを探す
50
+
51
+ var check = [];
52
+
53
+ for(i=0; i<arr.length; i++){
54
+
55
+ check.push(arr[i]["b"]);
56
+
57
+ }
58
+
59
+ var dubble = check.filter(function(x, i, arr){
60
+
61
+ // check中のものが配列の中で最初にhitして、別でもhitする場合だけ抽出
62
+
63
+ return arr.indexOf(x) === i && i !== arr.lastIndexOf(x);
64
+
65
+ });
66
+
67
+ ```
68
+
69
+
70
+
41
71
  ###補足情報(言語/FW/ツール等のバージョンなど)
42
72
 
43
73
  jQueryなどが使えないので、素の状態で書きたいです。