underscore.js の flatten
下記のような複数の配列の中から、特定の値が1個でも含まれているかどうかを確認する処理のため、underscore.jsのflattenを使って一旦1次元の配列にまとめてからチェックするようなのを書いた。
var arrayTest = {}; arrayTest[1] = {}; arrayTest[1][100] = {materials: [1,2,3,4]}; arrayTest[2] = {}; arrayTest[2][200] = {materials: [4,5,6]}; var materialIds = _.uniq(_.flatten(_.map(arrayTest, function(hoge) { return _.map(hoge, function(foo) { return foo.materials; }); }))); console.log('materialIds : ' + materialIds); // 1,2,3,4,5,6 が出力 var targetMaterialId = 3; var existTarget = _.contains(materialIds, targetMaterialId); console.log('targetExistance is ' + !!existTarget); // trueが出力 targetMaterialId = 7; existTarget = _.contains(materialIds, targetMaterialId); console.log('targetExistance is ' + !!existTarget); // falseが出力
ちょっと_がネストしまくって読みづらいかな。。。