根据嵌套数组中匹配的键值获取对象
Get object based on matching key value in nested array
我有一个电影提要,我试图在其中检索具有特定键值的对象的"name"值。以下是回应:
{
genres: [
{
id: 18,
name: "Drama"
},
],
homepage: "http://www.therewillbeblood.com/",
id: 7345,
imdb_id: "tt0469494",
release_date: "2007-12-26",
crew: [
{
id: 4762,
name: "Paul Thomas Anderson",
department: "Writing",
job: "Screenplay",
profile_path: "/6lDE5N6lQUvAbKBRazn2Q0mRk44.jpg"
},
{
id: 52563,
name: "Upton Sinclair",
department: "Writing",
job: "Novel",
profile_path: null
},
{
id: 2950,
name: "Robert Elswit",
department: "Camera",
job: "Director of Photography",
profile_path: null
},
{
id: 1809,
name: "Dylan Tichenor",
department: "Editing",
job: "Editor",
profile_path: null
},
{
id: 4762,
name: "Paul Thomas Anderson",
department: "Directing",
job: "Director",
profile_path: "/6lDE5N6lQUvAbKBRazn2Q0mRk44.jpg"
},
{
id: 4772,
name: "Cassandra Kulukundis",
department: "Production",
job: "Casting",
profile_path: null
}
]
}
因此,我试图找到"导演"的"工作"关键价值观的对象,那就是保罗·托马斯·安德森。
这是我的javascript,我根据release_date的值设置年份变量。只是想弄清楚如何设置导演变量:
<script type="text/javascript">
$(document).ready(function() {
var url = 'http://api.themoviedb.org/3/movie/';
imdb_id = 'tt0102685';
key = '?api_key=XXXXXXXXXXXX';
append = '&append_to_response=credits';
$.ajax({
type: 'GET',
url: url + imdb_id + key + append,
dataType: 'jsonp',
success: function(data) {
var $year = data.release_date.substring(0, 4);
$('#year').html($year);
},
});
});
</script>
如有任何帮助,我们将不胜感激!花了将近两天的时间试图弄清楚,但都无济于事。
如果你使用现代浏览器,你可以使用过滤功能:
var name = data.crew.filter(function(e){
return (e.job=="Director") ? true:false;
})[0].name;
JS Fiddle:http://jsfiddle.net/gTzyT/
错误处理示例
function getDirectorName(crew){
var name = "";
try{
name = json.crew.filter(function(e){
return e.job=="Director"
})[0].name;
}catch(err){
name = "No Director";
}
return name;
}
//calling the method
alert(getDirectorName(data.crew));
对于稍微"不同"的方法,请先按作业排序。例如
data.crew.sort(function(a,b) {
return a.job == 'Director' ? -1 : 1;
});
console.log(data.crew[0].name); // => name of Director
jsfiddle此处
注意:我不一定赞同这个解决方案。排序不是最高效的方法。并且它有副作用(改变data.crew
阵列的顺序,这可能是不希望的)。但这是一个"可爱"的解决方案,所以我想我会把它扔出去。:)
相关文章:
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 从 JSON 获取键值对而不使用 .(DOT) 在 Java 脚本或 jquery 中
- 根据嵌套数组中匹配的键值获取对象
- JSON.Stringify replacer函数无法获取键值
- 从字符串javascript中获取键值对
- JSON:字符集和获取键/值
- 如何在Acrobat中使用javascript获取PDF表单字段的所有键值对
- 如何获取键值为0的对象
- 如何根据下划线中的值获取键
- 从javascript中的值获取键的有效方法
- 如何获取对象中的键值对列表
- 如何在角度UI树中获取某个项目的键值或迭代
- 如何在行双击 radgrid 时获取数据键值
- 在jQuery中通过索引获取字典的键值
- Lodash:获取具有多个键值匹配的新数组
- Javascript 从对象中获取相应的键/值
- 如何从 JavaScript 或 jQuery 中的键/值数组中获取值
- 从 Chrome 存储中获取所有键:值
- 从对象的 JSON 数组中获取键值对
- Javascript-在不使用Array.prototype.filter的情况下,根据键值获取两个对象数组之间的差异