teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

objをresultに変更

2020/08/13 10:11

投稿

kaminarikun
kaminarikun

スコア8

title CHANGED
File without changes
body CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  以下いろいろなパターン(一次元連想配列)がある中で、
4
4
 
5
+ 「objからresultを得たい」つまり
5
6
  「xをtrueに、それ以外をすべてfalseにしたい」
6
7
 
7
8
  のですが、モダンな書き方というか、forEachなど使わず一行でやるにはどうすべきでしょうか?
@@ -22,8 +23,8 @@
22
23
  ```
23
24
  以下、なんとなく惜しい感じまでできたのですが、余計な配列が増えてしまうのです。
24
25
  ```
25
- var obj = Object.keys(obj).map( key => key === 'x' ? obj = { [key]: true } : obj = { [key]: false } );
26
+ var result = Object.keys(obj).map( key => key === 'x' ? obj = { [key]: true } : obj = { [key]: false } );
26
- console.log(obj);
27
+ console.log(result);
27
28
  ```
28
29
 
29
30
  適切なメソッドを見つけることができません。宜しくお願い致します。

4

インデント調整

2020/08/13 10:11

投稿

kaminarikun
kaminarikun

スコア8

title CHANGED
File without changes
body CHANGED
@@ -8,16 +8,16 @@
8
8
 
9
9
  ```js
10
10
  // パターン1
11
- var obj = { a:true, b:false, x:false };
11
+ var obj = { a:true, b:false, x:false };
12
- var result = { a:false, b:false, x:true};
12
+ var result = { a:false, b:false, x:true};
13
13
 
14
14
  // パターン2
15
- var obj = { c:false, d:false, x:false };
15
+ var obj = { c:false, d:false, x:false };
16
16
  var result = { c:false, d:false, x:true};
17
17
 
18
18
  // パターン3
19
- var obj = { a:true, b:true, e:true, x:true};
19
+ var obj = { a:true, b:true, e:true, x:true};
20
- var result = { a:false , b:false , e:false , x:true};
20
+ var result = { a:false , b:false, e:false, x:true};
21
21
 
22
22
  ```
23
23
  以下、なんとなく惜しい感じまでできたのですが、余計な配列が増えてしまうのです。

3

パターンを追加

2020/08/13 10:04

投稿

kaminarikun
kaminarikun

スコア8

title CHANGED
File without changes
body CHANGED
@@ -1,16 +1,23 @@
1
1
  連想配列オブジェクトの値をすべて変更したいです。
2
2
 
3
- 以下xをtrueに、それ以外をすべてfalseにしたのですが、モダンな書き方とうか、forEachど使わず行でやにはどうすべきしょうか?
3
+ 以下いパターン(次元連想配列)があ
4
4
 
5
+ 「xをtrueに、それ以外をすべてfalseにしたい」
6
+
7
+ のですが、モダンな書き方というか、forEachなど使わず一行でやるにはどうすべきでしょうか?
8
+
5
9
  ```js
10
+ // パターン1
6
11
  var obj = { a:true, b:false, x:false };
7
12
  var result = { a:false, b:false, x:true};
8
13
 
14
+ // パターン2
9
15
  var obj = { c:false, d:false, x:false };
10
- var obj = { c:false, d:false, x:true};
16
+ var result = { c:false, d:false, x:true};
11
17
 
18
+ // パターン3
12
19
  var obj = { a:true, b:true, e:true, x:true};
13
- var obj = { a:false , b:false , e:false , x:true};
20
+ var result = { a:false , b:false , e:false , x:true};
14
21
 
15
22
  ```
16
23
  以下、なんとなく惜しい感じまでできたのですが、余計な配列が増えてしまうのです。

2

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

2020/08/13 10:01

投稿

kaminarikun
kaminarikun

スコア8

title CHANGED
File without changes
body CHANGED
@@ -3,27 +3,20 @@
3
3
  以下xをtrueに、それ以外をすべてfalseにしたいのですが、モダンな書き方というか、forEachなど使わず一行でやるにはどうすべきでしょうか?
4
4
 
5
5
  ```js
6
- // 元の値
7
6
  var obj = { a:true, b:false, x:false };
8
- var obj = { a:false, b:false, x:false };
7
+ var result = { a:false, b:false, x:true};
9
- var obj = { a:true, b:true, x:true};
10
8
 
11
- // 元の値がなんでも、常にこれがほしい
9
+ var obj = { c:false, d:false, x:false };
12
- var result = { a:false, b:false, x:true};
10
+ var obj = { c:false, d:false, x:true};
11
+
12
+ var obj = { a:true, b:true, e:true, x:true};
13
+ var obj = { a:false , b:false , e:false , x:true};
14
+
13
15
  ```
14
- 普通にmapを使おうとすると(これは配列だけにか効かないのでしょうか?)エラーになりまし、
16
+ 以下、なんなく惜しい感じまでできたので余計な配列が増えてまうのです
15
17
  ```
16
- var obj = obj.map(e=> e.false);
18
+ var obj = Object.keys(obj).map( key => key === 'x' ? obj = { [key]: true } : obj = { [key]: false } );
17
19
  console.log(obj);
18
20
  ```
19
- Object.valuesを使うとfalseにはできますが、値しか得られずキーがなくなってしまいますし、キーがないから「xだけtrure」みたいなこともできません。
21
+
20
- ```
21
- var obj = Object.values(obj).map(e=> e=false);
22
- console.log(obj);
23
- ```
24
- Object.keysで値を作り直しても見たのですがこれもできませんでした。
25
- ```
26
- var obj = Object.keys(obj).map( key => obj[key] = false );
27
- console.log(obj);
28
- ```
29
22
  適切なメソッドを見つけることができません。宜しくお願い致します。

1

追加

2020/08/13 10:00

投稿

kaminarikun
kaminarikun

スコア8

title CHANGED
File without changes
body CHANGED
@@ -20,6 +20,10 @@
20
20
  ```
21
21
  var obj = Object.values(obj).map(e=> e=false);
22
22
  console.log(obj);
23
-
24
23
  ```
24
+ Object.keysで値を作り直しても見たのですがこれもできませんでした。
25
+ ```
26
+ var obj = Object.keys(obj).map( key => obj[key] = false );
27
+ console.log(obj);
28
+ ```
25
29
  適切なメソッドを見つけることができません。宜しくお願い致します。