测试 JavaScript 数组中 JSON 值是不是存在
Posted
技术标签:
【中文标题】测试 JavaScript 数组中 JSON 值是不是存在【英文标题】:Test existence of JSON value in JavaScript Array测试 JavaScript 数组中 JSON 值是否存在 【发布时间】:2011-08-20 12:32:36 【问题描述】:我有一个 JSON 对象数组,如下所示:
var myArray = [
name:'foo',number:2,
name:'bar',number:9,
etc.
]
如何检测 myArray 是否包含 name="foo" 的对象?
【问题讨论】:
Those are not JSON objects 【参考方案1】:除非我遗漏了什么,否则您至少应该使用 each 来提高可读性而不是 map。并且为了性能,你应该在找到你要找的东西后打破 each,没有理由继续循环:
var hasFoo = false;
$.each(myArray, function(i,obj)
if (obj.name === 'foo') hasFoo = true; return false;
);
【讨论】:
【参考方案2】:有了这个:
$.each(myArray, function(i, obj)
if(obj.name =='foo')
alert("Index "+i + " has foo");
);
干杯
【讨论】:
Array.prototype.each
不存在。您的意思是来自 jQuery 的 $.each
或 Array.prototype.forEach
,只有较新的浏览器才支持。【参考方案3】:
for(var i = 0; i < myArray.length; i++)
if (myArray[i].name == 'foo')
alert('success!')
【讨论】:
不要使用for...in
循环数组。【参考方案4】:
var hasFoo = false;
$.map(myArray, function(v)
if (v.name === 'foo') hasFoo = true;
);
【讨论】:
很好奇,为什么要映射而不是每个? 我只是碰巧在对象上使用新的 jQuery 1.6 映射,所以这是我想到的第一件事。无法想象有性能差异,只需要克服返回值丢失到以太的悲伤。 不会有人想到可怜的孤儿吧! 缺点是不能提前终止循环(相对于each
)。以上是关于测试 JavaScript 数组中 JSON 值是不是存在的主要内容,如果未能解决你的问题,请参考以下文章