2016-10-28 10 views
1

JSONの年齢と性別を比較し、詳細について対応する名前を表示しようとしています。それは私のために働いていません。JSON配列内の2つの値を一致させ、配列内に対応する値を取得しようとしています

_.each(response.details, function(value, key){ 
 
    if (value.age == "12" && value.gender == "male") { 
 
      console.log(value.name + "name") 
 
    } 
 
});

JSON: 
 

 
details: [ 
 
{ 
 
    age: "12", 
 
    gender: "male", 
 
    name: "danny" 
 
}, 
 
{ 
 
    age: "13", 
 
    gender: "male", 
 
    name: "sunny" 
 
}, 
 
{ 
 
    age: "12", 
 
    gender: "female", 
 
    name: "janny" 
 
}, 
 
{ 
 
    age: "14", 
 
    gender: "female", 
 
    name: "josef" 
 
} 
 
],

+0

コンソールにエラー? –

+0

「機能しない」とはどういう意味ですか? –

+0

うまく動作しているようです:https://jsfiddle.net/k1ye5bm9/ –

答えて

0

あなたのコードだけで、作品私は_.result()_.find()機能を追加しました:

var details = [{ 
 
    age: "12", 
 
    gender: "male", 
 
    name: "danny" 
 
}, { 
 
    age: "13", 
 
    gender: "male", 
 
    name: "sunny" 
 
}, { 
 
    age: "12", 
 
    gender: "female", 
 
    name: "janny" 
 
}, { 
 
    age: "14", 
 
    gender: "female", 
 
    name: "josef" 
 
}]; 
 

 
console.log(_.result(_.find(details, { 
 
    age: '12', 
 
    gender: 'male' 
 
}), 'name') + 'name');
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.4/lodash.js"></script>

+0

その作品に感謝します。 –

0

なぜこのようなlodashを使用すれば、javacriptはフィルタ経由でこのサポートをネイティブに提供します!

var details = [{ 
 
    age: "12", 
 
    gender: "male", 
 
    name: "danny" 
 
}, { 
 
    age: "13", 
 
    gender: "male", 
 
    name: "sunny" 
 
}, { 
 
    age: "12", 
 
    gender: "female", 
 
    name: "janny" 
 
}, { 
 
    age: "14", 
 
    gender: "female", 
 
    name: "josef" 
 
}]; 
 

 
var results = details.filter(function(row) { 
 
\t if (row.age == "12" && row.gender == "male") { 
 
\t \t return true; 
 
\t } 
 
}); 
 
results.forEach(function(result) { 
 
    console.log(result.name + ' name'); 
 
})

関連する問題