Javascript从JSON数组中提取特定记录

Javascript从JSON数组中提取特定记录,javascript,json,Javascript,Json,我有一个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"}] var myJSONobject = [{"Name":"Bob", "Employ

我有一个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"}]
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);
}
如何使用Javascript查找和检索Jim的记录,通过EmployeeID 4432进行搜索?

您可以使用筛选器:

搜索功能可以按如下方式实现:

function findByEmployeeId(records, employeeId) {
   return records.filter(function(r) { return r["EmployeeID"] == employeeId })[0]||null;
}
一般来说,如果您对数据有任何控制权,我建议更改结构以使您的生活更轻松。如果使用以下结构,则可以使用记录[employeeId]直接访问记录:

您可以使用过滤器:

搜索功能可以按如下方式实现:

function findByEmployeeId(records, employeeId) {
   return records.filter(function(r) { return r["EmployeeID"] == employeeId })[0]||null;
}
一般来说,如果您对数据有任何控制权,我建议更改结构以使您的生活更轻松。如果使用以下结构,则可以使用记录[employeeId]直接访问记录:


首先,您的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"}]
因此,您可以通过以下方式访问EmplyEID 4432:

[{"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 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);
}

首先,您的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"}]
因此,您可以通过以下方式访问EmplyEID 4432:

[{"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 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,控制台显示records.filter不是一个函数…并不是每个浏览器都有此功能,但我建议签出它,它为您提供了大量搜索功能。不幸的是,我无法控制数据。。。这是作为来自其他服务器的提要发送的server@Adam如果记录不是数组,或者您使用的是IE8或更低版本,则会发生这种情况。如果是前者,则传递记录数组。如果是后者,请在处尝试polyfill。或者在我尝试您的函数示例时查找是否可以使用ECMAScript 6,控制台显示records.filter不是一个函数…并非每个浏览器都有此功能,但我建议签出它,它为您提供了大量搜索功能。不幸的是,我无法控制数据。。。这是作为来自其他服务器的提要发送的server@Adam如果记录不是数组,或者您使用的是IE8或更低版本,则会发生这种情况。如果是前者,则传递记录数组。如果是后者,请尝试.OP处的polyfill,它希望通过EmployeeID检索员工–这将通过其数组索引检索员工。OP希望通过其EmployeeID检索员工–这将通过其数组索引检索员工。