ページ 11

【解決済み】配列変数の比較

Posted: 2020年4月29日(水) 16:46
by 冷やっこ
いつもお世話になっております。
またどうぞ宜しくお願い致します。

イベントコマンドのスクリプトで配列変数の比較をしたく検索をしまして

コード: 全て選択

var array1 = [1,2,3,4,5]
var array2 = [1,2,3,4,5]
var aaa = JSON.stringify(array1) == JSON.stringify(array2); // 結果true
上記の方法で比較できる事が解りました。


そこでデータベースのアイテム欄を活用してアイテムID0001の名前に「 [1,2,3,4,5] 」と入力しておいて

コード: 全て選択

var array1 = [1,2,3,4,5]
var array2 = $dataItems[1].name;
var aaa = JSON.stringify(array1) == JSON.stringify(array2); // 結果false
上記を試してみると結果はfalseでした。
これを結果trueにするには記述等どの様にしたら良いのでしょうか?
どなたかお知恵をお貸し頂けたらありがたいです。
それではまたどうぞ宜しくお願い致します。

Re: 配列変数の比較

Posted: 2020年4月29日(水) 17:39
by Plasma Dark
まず、jsにおける比較は==ではなく===で行ったほうが安全です。
これを結果trueにするには記述等どの様にしたら良いのでしょうか?
アイテムの名前は元々文字列なので、JSON.stringifyを更にかけてあげなくても良いです。
が、配列を強引に文字列化して比較するのはあまりオススメしません。

どのレベルで比較したいのかによって適した方法も変わりますが、2つの配列を順番も含めて同じであるか比較したい場合は、素直にループ回しちゃうほうが良いんじゃないかと思います。

コード: 全て選択

const array1 = [1,2,3,4,5];
const array2 = JsonEx.parse($dataItems[itemId].name);
const isEqual = !Array.isArray(array2) ? false : array1.length === array2.length && !array1.some((element, index) => element !== array2[index]);

Re: 配列変数の比較

Posted: 2020年4月29日(水) 18:15
by 冷やっこ
Plasma Dark様、返信ありがとうございます!

無事に比較する事ができました、ありがとうございます!
まず、jsにおける比較は==ではなく===で行ったほうが安全です。
比較には === で行う方が良いのですね。
コードに関しては正直どの様に比較しているのか今はコードを見てもよくわかってないのでこれから少しづつ勉強して解明したいと思います。

Plasma Dark様、このたびもお世話になり本当にありがとうございました!