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

返信する
アバター
冷やっこ
記事: 132
登録日時: 2020年3月04日(水) 22:47

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

投稿記事 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にするには記述等どの様にしたら良いのでしょうか?
どなたかお知恵をお貸し頂けたらありがたいです。
それではまたどうぞ宜しくお願い致します。
最後に編集したユーザー 冷やっこ [ 2020年4月29日(水) 18:20 ], 累計 2 回
アバター
Plasma Dark
記事: 736
登録日時: 2020年2月08日(土) 02:29
連絡する:

Re: 配列変数の比較

投稿記事 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]);
アバター
冷やっこ
記事: 132
登録日時: 2020年3月04日(水) 22:47

Re: 配列変数の比較

投稿記事 by 冷やっこ »

Plasma Dark様、返信ありがとうございます!

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

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

“MV:質問”に戻る