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

回答編集履歴

3

null合体演算子を使うまでもないため、||に修正

2020/08/27 06:18

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -7,6 +7,6 @@
7
7
  ```javascript
8
8
  let arr = [];
9
9
  let arr2 = [{id: 1, name: 'apple'}];
10
- const res4 = (typeof arr == 'object' && arr.length > 0 ? arr : null) ?? (typeof arr2 == 'object' && arr2.length > 0 ? arr2 : null) ?? {};
10
+ const res4 = (typeof arr == 'object' && arr.length > 0 ? arr : null) || (typeof arr2 == 'object' && arr2.length > 0 ? arr2 : null) || {};
11
11
  console.log(res4);
12
12
  ```

2

変数の中身がそもそも入っているかも比較演算

2020/08/27 06:18

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -2,10 +2,11 @@
2
2
 
3
3
  さて、配列変数に関しては、宣言時、代入の時点で初期化してしまうと、変数単体では真となりますので、
4
4
  配列変数の長さで、比較演算してはいかがでしょうか?
5
+ また、変数がオブジェクトかどうか(配列はオブジェクトになる)の比較も追加しました。
5
6
 
6
7
  ```javascript
7
8
  let arr = [];
8
9
  let arr2 = [{id: 1, name: 'apple'}];
9
- const res4 = arr.length > 0 ? arr : arr2 || {};
10
+ const res4 = (typeof arr == 'object' && arr.length > 0 ? arr : null) ?? (typeof arr2 == 'object' && arr2.length > 0 ? arr2 : null) ?? {};
10
11
  console.log(res4);
11
12
  ```

1

ちょこちょこ文言修正

2020/08/27 06:13

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  まず、**または**の論理演算は、`||`というように、**ヴァーティカルライン二本**で結ぶのが正しいです。
2
2
 
3
3
  さて、配列変数に関しては、宣言時、代入の時点で初期化してしまうと、変数単体では真となりますので、
4
- 変数の長さで、論路演算してはいかがでしょうか?
4
+ 配列変数の長さで、比較演算してはいかがでしょうか?
5
5
 
6
6
  ```javascript
7
7
  let arr = [];