サーバーから受け取った json (下記サンプルでは data
に格納しています)の中から、『points
が "0"
または 空(""
) のものがあるかどうか』をチェックしたいです。型は文字列です。
key_1
と key_2
というやや構造の異なる大きい配列がふたつあり、そのどちらもチェックする必要があります。
どちらか片方にでも 0 か 空 のものがあれば true
を返します。
チェック自体は下記のscriptでできたのですが
forEach
が入れ子になっていたり、
チェック用に空の配列を用意したりするところが冗長で非効率なのではと思っています。
いいやり方がありましたらお教えいただきたいと思っています。
IE9 も対応するので Array の便利な関数は一部使えないのですが、lodash
などでできる方法があればそちらでも結構です。
// サーバーからの json の戻り値とお考えください var data = { "key_1" : [ { "key_1_1" : [ { "key_1_2" : [ { "points" : "10000", } ] }, { "key_1_2" : [ { "points" : "0", } ] } ] } ], "key_2" : [ { "key_2_1" : [ { "points" : "9999", } ] } ] }; // key_1の結果を入れるための空の配列 var arr = []; // key_2の結果を入れるための空の配列 var arr2 = []; // key_1の中にpointsが 0 または 空 のものがあるか data.key_1.forEach((a) => { a.key_1_1.forEach((b) => { arr = b.key_1_2.filter((c) => { return c.points === '0' || !c.points; }); }); }); // key_2の中にpointsが 0 または 空 のものがあるか data.key_2.forEach((a) => { arr2 = a.key_2_1.filter((b) => { return b.points === '0' || !b.points; }); }); // key_1, key_2 どちらかに pointsが 0 または 空 のものがあるか // (arr.length !== 0 || arr2.length !== 0) ? true : false;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/26 03:20