JavaScript从JSON阵列
问题描述:
特定记录我有一个JSON数组是这样的:JavaScript从JSON阵列
[{"Name":"Bob", "EmployeeID":1234, "StartDate":"12/01/2011"},
{"Name":"Jim", "EmployeeID":4432, "StartDate":"01/12/1997"},
{"Name":"Heather", "EmployeeID":6643, "StartDate":"07/09/2010"}]
如何使用Javascript功能来查找和检索吉姆记录,由雇员(4432)搜索?
答
您可以使用filter
:
var records = [{"Name":"Bob", "EmployeeID":1234, "StartDate":"12/01/2011"},
{"Name":"Jim", "EmployeeID":4432, "StartDate":"01/12/1997"},
{"Name":"Heather", "EmployeeID":6643, "StartDate":"07/09/2010"}];
var result = records.filter(function(r) { return r["EmployeeID"] == 4432 })[0]||'No record found';
搜索功能,可以实现如下:
function findByEmployeeId(records, employeeId) {
return records.filter(function(r) { return r["EmployeeID"] == employeeId })[0]||null;
}
在一般情况下,如果你有对数据的任何控制,我会建议改变结构让你的生活更轻松。如果您使用下面的结构,你可以直接使用records[employeeId]
访问记录:
{ "1234" : {"Name":"Bob", "EmployeeID":1234, "StartDate":"12/01/2011"},
"4432" : {"Name":"Jim", "EmployeeID":4432, "StartDate":"01/12/1997"},
"6643" : {"Name":"Heather", "EmployeeID":6643, "StartDate":"07/09/2010"} }
答
首先,你的JSON对象不正确;它缺少两个逗号。它应该是:
[{"Name":"Bob", "EmployeeID":1234, "StartDate":"12/01/2011"},
{"Name":"Jim", "EmployeeID":4432, "StartDate":"01/12/1997"},
{"Name":"Heather", "EmployeeID":6643, "StartDate":"07/09/2010"}]
所以,你可以访问EmplyeeID 4432这样的:
var myJSONobject = [{"Name":"Bob", "EmployeeID":1234, "StartDate":"12/01/2011"},
{"Name":"Jim", "EmployeeID":4432, "StartDate":"01/12/1997"},
{"Name":"Heather", "EmployeeID":6643, "StartDate":"07/09/2010"}];
function showJSON() {
alert(myJSONobject[1].EmployeeID);
}
或者,如果你能使用的ECMAScript 6 https://developer.mozilla.org/en-找到() US/docs/Web/JavaScript/Reference/Global_Objects/Array/find – 2014-11-24 21:08:42
当我尝试你的函数示例时,控制台说“records.filter不是一个函数...” – Adam 2014-11-24 21:16:07
不是每个浏览器都有这个,但是我想建议查看[Underscore.js](http://underscorejs.org/),它提供了许多搜索功能。 – stakolee 2014-11-24 21:18:07