質問編集履歴

5

objをresultに変更

2020/08/13 10:11

投稿

kaminarikun
kaminarikun

スコア8

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 obj = Object.keys(obj).map( key => key === 'x' ? obj = { [key]: true } : obj = { [key]: false } );
51
+ var result = Object.keys(obj).map( key => key === 'x' ? obj = { [key]: true } : obj = { [key]: false } );
50
52
 
51
- console.log(obj);
53
+ console.log(result);
52
54
 
53
55
  ```
54
56
 

4

インデント調整

2020/08/13 10:11

投稿

kaminarikun
kaminarikun

スコア8

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 = { a:false, b:false, x:true};
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 , e:false , x:true};
39
+ var result = { a:false , b:false, e:false, x:true};
40
40
 
41
41
 
42
42
 

3

パターンを追加

2020/08/13 10:04

投稿

kaminarikun
kaminarikun

スコア8

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
- 以下xをtrueに、それ以外をすべてfalseにしたいのですが、モダンな書き方というか、forEachなど使わず一行でやるにはどうすべきでしょうか?
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 obj = { c:false, d:false, x:true};
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 obj = { a:false , b:false , e:false , x:true};
39
+ var result = { a:false , b:false , e:false , x:true};
26
40
 
27
41
 
28
42
 

2

惜しい感じのところまで追加

2020/08/13 10:01

投稿

kaminarikun
kaminarikun

スコア8

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 obj = { a:false, b:false, x:false };
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 result = { a:false, b:false, x:true};
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
- 普通にmapを使おうとすると(これは配列だけにか効かないのでしょうか?)エラーになりまし、
31
+ 以下、なんなく惜しい感じまでできたので余計な配列が増えてまうのです
28
32
 
29
33
  ```
30
34
 
31
- var obj = obj.map(e=> e.false);
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

追加

2020/08/13 10:00

投稿

kaminarikun
kaminarikun

スコア8

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