回答編集履歴
2
三項演算子
test
CHANGED
@@ -65,4 +65,9 @@
|
|
65
65
|
}
|
66
66
|
```
|
67
67
|
|
68
|
+
この部分 `haystack.includes(needle) ? ['✅'] : ['']` は、三項演算子と呼ばれる`if/else`を1行で書ける記法です。
|
69
|
+
詳細は下記サイトをご覧ください。
|
70
|
+
|
71
|
+
- [条件 (三項) 演算子 - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Conditional_Operator)
|
72
|
+
|
68
73
|
蛇足ですが、こういうたくさんの中から1つを見つけるサンプルコードを書く際は、海外の慣習でhaystack(干し草の山)からneedle(針)を探すという表現をしますので、今回サンプルを提示する際にその用語を使わせていただきました。
|
1
誤字修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
使えますが、そのままでは使えません。
|
3
3
|
|
4
4
|
> ②半ば丸投げになってしまい申し訳ありませんが、どのようなアプローチをすればGASで<最終形>が実現できますか?
|
5
|
-
- `.flat
|
5
|
+
- `.flat()`を使用しましょう。
|
6
6
|
- また`.some()`を使用する意味は今回はありませんので、`.includes()`を推奨します。
|
7
7
|
|
8
8
|
### 不具合の原因と対策
|
@@ -12,14 +12,14 @@
|
|
12
12
|
例を見てみましょう。
|
13
13
|
A2〜A4の値を取得してきて、そこに「apple」が含まれているかどうかを判別したいとします。
|
14
14
|
|
15
|
-
- `.getValues()`で取得してきた配列
|
15
|
+
- `.getValues()`で取得してきた配列originalValuesは`[ [ 'apple' ], [ 'banana' ], [ 'orange' ], [ 'kiwi' ] ]`という2次元配列です。
|
16
16
|
- originalValuesに`'apple'`が含まれているか?というと含まれていません。
|
17
17
|
- `['apple']`はありますが、`'apple'`は存在しません。
|
18
|
-
- ですので`false`となります(
|
18
|
+
- ですので`false`となります(originalResult参照)。
|
19
|
-
- では`['apple']`は含まれているか?と`.some()`を使ってみても`false`になります(
|
19
|
+
- では`['apple']`は含まれているか?と`.some()`を使ってみても`false`になります(originalResult2参照)。
|
20
20
|
- JavaScriptではたとえ中身が同じ値だとしても、別々に作った配列・オブジェクトは別物ととらえるからです。
|
21
21
|
- ではどうすればいいのか?取得してきた配列を`.flat()`を用いて1次元配列化すればいいのです。
|
22
|
-
- `[ 'apple', 'banana', 'orange', 'kiwi' ]`という形にすれば、`.some()`の検索にもちゃんとひっかか
|
22
|
+
- `[ 'apple', 'banana', 'orange', 'kiwi' ]`という形にすれば、`.some()`の検索にもちゃんとひっかかってくれますね(newResult参照)。
|
23
23
|
|
24
24
|
```javascript
|
25
25
|
function someTest() {
|