質問編集履歴
5
objをresultに変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -5,6 +5,8 @@
|
|
5
5
|
以下いろいろなパターン(一次元連想配列)がある中で、
|
6
6
|
|
7
7
|
|
8
|
+
|
9
|
+
「objからresultを得たい」つまり
|
8
10
|
|
9
11
|
「xをtrueに、それ以外をすべてfalseにしたい」
|
10
12
|
|
@@ -46,9 +48,9 @@
|
|
46
48
|
|
47
49
|
```
|
48
50
|
|
49
|
-
var
|
51
|
+
var result = Object.keys(obj).map( key => key === 'x' ? obj = { [key]: true } : obj = { [key]: false } );
|
50
52
|
|
51
|
-
console.log(
|
53
|
+
console.log(result);
|
52
54
|
|
53
55
|
```
|
54
56
|
|
4
インデント調整
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,15 +18,15 @@
|
|
18
18
|
|
19
19
|
// パターン1
|
20
20
|
|
21
|
-
var obj = { a:true, b:false, x:false };
|
21
|
+
var obj = { a:true, b:false, x:false };
|
22
22
|
|
23
|
-
var result =
|
23
|
+
var result = { a:false, b:false, x:true};
|
24
24
|
|
25
25
|
|
26
26
|
|
27
27
|
// パターン2
|
28
28
|
|
29
|
-
var obj = { c:false, d:false, x:false };
|
29
|
+
var obj = { c:false, d:false, x:false };
|
30
30
|
|
31
31
|
var result = { c:false, d:false, x:true};
|
32
32
|
|
@@ -34,9 +34,9 @@
|
|
34
34
|
|
35
35
|
// パターン3
|
36
36
|
|
37
|
-
var obj = { a:true, b:true, e:true, x:true};
|
37
|
+
var obj = { a:true, b:true, e:true, x:true};
|
38
38
|
|
39
|
-
var result = { a:false , b:false
|
39
|
+
var result = { a:false , b:false, e:false, x:true};
|
40
40
|
|
41
41
|
|
42
42
|
|
3
パターンを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,11 +2,21 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
+
以下いろいろなパターン(一次元連想配列)がある中で、
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
「xをtrueに、それ以外をすべてfalseにしたい」
|
10
|
+
|
11
|
+
|
12
|
+
|
5
|
-
|
13
|
+
のですが、モダンな書き方というか、forEachなど使わず一行でやるにはどうすべきでしょうか?
|
6
14
|
|
7
15
|
|
8
16
|
|
9
17
|
```js
|
18
|
+
|
19
|
+
// パターン1
|
10
20
|
|
11
21
|
var obj = { a:true, b:false, x:false };
|
12
22
|
|
@@ -14,15 +24,19 @@
|
|
14
24
|
|
15
25
|
|
16
26
|
|
27
|
+
// パターン2
|
28
|
+
|
17
29
|
var obj = { c:false, d:false, x:false };
|
18
30
|
|
19
|
-
var
|
31
|
+
var result = { c:false, d:false, x:true};
|
20
32
|
|
21
33
|
|
22
34
|
|
35
|
+
// パターン3
|
36
|
+
|
23
37
|
var obj = { a:true, b:true, e:true, x:true};
|
24
38
|
|
25
|
-
var
|
39
|
+
var result = { a:false , b:false , e:false , x:true};
|
26
40
|
|
27
41
|
|
28
42
|
|
2
惜しい感じのところまで追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,50 +8,36 @@
|
|
8
8
|
|
9
9
|
```js
|
10
10
|
|
11
|
-
// 元の値
|
12
|
-
|
13
11
|
var obj = { a:true, b:false, x:false };
|
14
12
|
|
15
|
-
var
|
13
|
+
var result = { a:false, b:false, x:true};
|
16
|
-
|
17
|
-
var obj = { a:true, b:true, x:true};
|
18
14
|
|
19
15
|
|
20
16
|
|
21
|
-
|
17
|
+
var obj = { c:false, d:false, x:false };
|
22
18
|
|
23
|
-
var
|
19
|
+
var obj = { c:false, d:false, x:true};
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
var obj = { a:true, b:true, e:true, x:true};
|
24
|
+
|
25
|
+
var obj = { a:false , b:false , e:false , x:true};
|
26
|
+
|
27
|
+
|
24
28
|
|
25
29
|
```
|
26
30
|
|
27
|
-
|
31
|
+
以下、なんとなく惜しい感じまでできたのですが、余計な配列が増えてしまうのです。
|
28
32
|
|
29
33
|
```
|
30
34
|
|
31
|
-
var obj = obj.map(e=> e
|
35
|
+
var obj = Object.keys(obj).map( key => key === 'x' ? obj = { [key]: true } : obj = { [key]: false } );
|
32
36
|
|
33
37
|
console.log(obj);
|
34
38
|
|
35
39
|
```
|
36
40
|
|
37
|
-
Object.valuesを使うとfalseにはできますが、値しか得られずキーがなくなってしまいますし、キーがないから「xだけtrure」みたいなこともできません。
|
38
41
|
|
39
|
-
```
|
40
|
-
|
41
|
-
var obj = Object.values(obj).map(e=> e=false);
|
42
|
-
|
43
|
-
console.log(obj);
|
44
|
-
|
45
|
-
```
|
46
|
-
|
47
|
-
Object.keysで値を作り直しても見たのですがこれもできませんでした。
|
48
|
-
|
49
|
-
```
|
50
|
-
|
51
|
-
var obj = Object.keys(obj).map( key => obj[key] = false );
|
52
|
-
|
53
|
-
console.log(obj);
|
54
|
-
|
55
|
-
```
|
56
42
|
|
57
43
|
適切なメソッドを見つけることができません。宜しくお願い致します。
|
1
追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,7 +42,15 @@
|
|
42
42
|
|
43
43
|
console.log(obj);
|
44
44
|
|
45
|
+
```
|
45
46
|
|
47
|
+
Object.keysで値を作り直しても見たのですがこれもできませんでした。
|
48
|
+
|
49
|
+
```
|
50
|
+
|
51
|
+
var obj = Object.keys(obj).map( key => obj[key] = false );
|
52
|
+
|
53
|
+
console.log(obj);
|
46
54
|
|
47
55
|
```
|
48
56
|
|