示例 JSON 資料:
{
"assignments": [{
"date": "2022-04-01",
"lName": "lastname",
"uId": "12345",
"uCode": "LName1",
"fName": "FName1 ",
"aName": "AsignmentName1",
"aId": "998"
}]
}
我想根據搜索分配名稱過濾以下資料以獲取特定元素的內容。
例如在類似 SQL 的術語中
Select * FROM assignments WHERE `aName` = 'AssignmentName1'
我確信這很簡單,但是在如何完成它的方法上遇到了麻煩。
謝謝
uj5u.com熱心網友回復:
我是新來的,但是如果您可以訪問現代 JavaScript,我會執行以下操作:
const data = JSON.parse('{"assignments":[{"date":"2022-04-01","lName":"lastname","uId":"12345","uCode":"LName1","fName":"FName1 ","aName":"AsignmentName1","aId":"998"}]}';
const yourMatch = data.assignments.find(c => c.aName === 'AssignmentName1');
- 由于
data.assignments是一個陣列,你可以find()在它上面呼叫函式。此函式采用“搜索”函式/lambda 作為引數。 - 這個搜索功能基本上接受一個元素并決定它是否是您搜索的那個,或者不是回傳一個布林值。
- 在我的示例中,箭頭函式是
c => c.aName === 'AssignmentName1',它比普通函式定義更短且更易于閱讀。(你可以呼叫c任何你想要的,這樣更干凈。) - 如果您接受多個結果而不僅僅是第一個結果,您可以
find()與交換。filter()
uj5u.com熱心網友回復:
您首先必須決議 JSON 字串:
const parsedJSON = JSON.parse(jsonString);
回傳的物件包含 JSON 字串中的所有資料。要訪問 assignments 陣列,您可以使用點表示法。
const assignments = parsedJSON.assignments;
如果你不需要支持舊的瀏覽器,ES6 有一個方便的函式來查找物件中的值。使用“查找”函式并傳遞一個函式,該函式為您要查找的專案回傳 true:
const selectedAssignment = assignments.find( (assignment)=> {
return assignment.aName=="AssignmentName2";
});
如果你不想使用 ES6,你可以使用 for 回圈。
var assignments = JSON.parse(jsonString).assignments;
function getAssignmentWithName(name) {
for (var i = 0; i < assignments.length; i ) {
if (assignments[i].aName == name) {
return assignments[i];
}
}
return false;
}
var selectedAssignment = getAssignmentWithName("AssignmentName1");
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/459514.html
標籤:javascript json 解析
上一篇:在字串函式中查找特定單詞正在起作用...奇怪(javascript)
下一篇:如何為電話號碼創建正則運算式
