测试 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 的 $.eachArray.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 值是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

一. JavaScript数组常用方法

什么样的 JSON JOLT Spec 来获取键值输出,其中键是数据值,值是数组

JavaScript数组常用方法

perl中 hash值是数组如何访问?谢谢

js 转换成整形

为啥 Javascript 不能从字符串文字中解析这个 JSON 数组?