我有一个varable:
var name = "name";
这将在我拥有的对象数组中:
var all = [];
$.each(results, function(i, item){
all.push({
rank: i + 1,
username: item.TopicName,
mentions: item.LastHourCount,
totalcount: item.TotalCount,
urlLg: item.LargeImageUrl,
urlSm: item.SmallImageUrl,
shortname: item.ShortName
});
});
我需要查看对象数组并找到与变量“name”匹配的“shortname”。对象看起来像这样:
Object[
mentions: 21737
rank: 2
shortname: "name"
totalcount: 59330
urlLg: null
urlSm: "http://i.cdn.turner.com/nba/nba/pulse/allstar/2012/img/images-small/howard.png"
username: "lebron james"
],
一旦我发现它设置为变量: var showThis = all。[];
在循环遍历json文件的每个函数内部,可能在哪里查找名称?
答案 0 :(得分:3)
我想我可能会误解。如果您只想在all
中找到shortName
匹配name
的条目,那么:
var match;
$.each(all, function() {
if (this.shortName === name) {
match = this;
return false;
}
});
使用$.each
循环遍历数组。在迭代器回调中,this
将引用数组元素,因此我们只需检查this.shortName === name
。 return false
停止each
循环。如果不匹配,match
将保留其默认值(undefined
)。
或者作为传统的for
循环:
var match, index, entry;
for (index = 0; index < all.length; ++index) {
entry = all[index];
if (entry.shortName === name) {
match = entry;
break;
}
});
答案 1 :(得分:0)
var t={};
$.each(all, function(i, item){
if (item['shortname']=="name") {
t=this;
return false;
}
});
答案 2 :(得分:0)
Underscore.js解决方案:
var showThis = _.find( all, function ( elem ) {
return elem.shortname === name;
});
纯JavaScript解决方案:
var showThis = all.filter( function ( elem ) {
return elem.shortname === name;
})[ 0 ];
顺便说一句,.filter()
是ES5数组迭代方法。 ES5阵列迭代方法未在IE8和旧版本中实现。 (你可以轻松地将它们填充。)