2014-11-24 87 views
1

特定記錄我有一個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)搜索?

回答

5

您可以使用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"} } 
+1

或者,如果你能使用的ECMAScript 6 https://developer.mozilla.org/en-找到() US/docs/Web/JavaScript/Reference/Global_Objects/Array/find – 2014-11-24 21:08:42

+0

當我嘗試你的函數示例時,控制檯說「records.filter不是一個函數...」 – Adam 2014-11-24 21:16:07

+0

不是每個瀏覽器都有這個,但是我想建議查看[Underscore.js](http://underscorejs.org/),它提供了許多搜索功能。 – stakolee 2014-11-24 21:18:07

-1

首先,你的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); 
} 
+0

OP想要檢索僱員的EmployeeID' - 它通過數組索引檢索它。 – Shai 2014-11-24 21:16:17

+0

我真是個白癡!感謝您指出了這一點 :) – fictus 2014-11-24 21:17:16