2011-05-26 103 views
2

我有以下信息:如何解析JS数组?

  1. 城市名,在这种情况下Littelside。这是存储在一个变量var city

  2. 我有一个{}对象的数组。每个包含地址,城市,名称,状态和邮政编码

[{"address":"07288 Albertha Station",**"city":"Littelside"**,"created_at":"2011-05-25T19:24:51Z","id":1,"name":"Mr. Emmitt Emmerich","state":"Missouri","updated_at":"2011-05-25T19:24:51Z","zip":"75475-9938"},{NEXT OBJECT WITH ADDRESS CITY ETC}]

你如何使用var city作为搜索词来解析阵列,并返回地址,城市,州,名称和array与匹配城市的邮编?

谢谢!

回答

1
var myarr = [{"address":"07288 Albertha Station","city":"Littelside","created_at":"2011-05-25T19:24:51Z","id":1,"name":"Mr. Emmitt Emmerich","state":"Missouri","updated_at":"2011-05-25T19:24:51Z","zip":"75475-9938"}]; 
var city = 'Littelside'; 
$.each(myarr,function(key,value){ 
    if(value['city']== city){ 
     alert('hello'); 
    } 
}) 

这里有一个working demo

+0

你有什么好的JS书籍推荐? – 2011-05-26 19:31:17

+0

书籍no ...谁需要书籍,当你有互联网......我尽量不写任何原生js尽量使用jquery,你可以找到[documentation here](http://docs.jquery.com/Main_Page)其真正比我读过的任何书籍更有帮助 – mcgrailm 2011-05-26 19:37:19

+0

@JZ Javascript:道格拉斯克罗克福德的好作品是必须的:)。 – kapa 2011-05-26 19:46:25

-1

在阵列上循环,直到找到与the_array[i].city匹配的地方。

1

我使用的函数。

function arrayIndexOfProp(arr, prop, obj) { 
     var i = arr.length; 
     while (i--) { 
      if (arr[i] && arr[i][prop] === obj) { 
       return i; 
      } 
     } 
     return -1; 
    } 

var index = arrayIndexOfProp(theArray, "city","Littelside"); 
// do stuff with theArray[index] 
+0

+1写得很好 – kapa 2011-05-26 19:31:29

+0

的感谢!一个聪明的小点来节省几个字符在循环:) – 2011-05-26 19:36:41

1

Array.prototype.reduce

Array.prototype.reduce(
    function (prev, current) { 
     return prev || current.city === "Littelside" ? current : null; 
    }) 
+0

浏览器的支持并不是真的有AFAIK,但仍然+1。 – kapa 2011-05-26 19:29:16

+0

@bazmegakap,你说得对,它还没有得到广泛的支持。兼容性部分(链接如下)确实包含可用于将其移植到旧版浏览器上的代码。 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/Reduce#Compatibility – 2011-05-26 22:07:13

2

你要找的功能是$.grep()

var city='Littelside'; 

var cucc=$.grep(your_array, function (a) { 
    return a.city==search; 
})[0]; 

$.grep仍然会返回一个数组,与satisify过滤器函数内的所有元素。在这里,我使用[0]来获得第一个结果,如果您确信会有一个结果,那么这很好。所以cucc将有你正在寻找的整个对象。

jsFiddle Demo