簡體   English   中英

Javascript過濾JSON數據

[英]Javascript Filtering JSON data

樣本 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'

我敢肯定這很簡單,但是在完成它的方法上遇到了麻煩。

謝謝

您首先必須解析 JSON 字符串:

const parsedJSON = JSON.parse(jsonString);

返回的 object 包含 JSON 字符串中的所有數據。 要訪問分配數組,您可以使用點表示法。

const assignments = parsedJSON.assignments;

如果您不需要支持舊瀏覽器,ES6 有一個方便的 function 用於查找 object 中的值。使用“查找”函數並傳遞一個 function,它會為您要查找的項目返回 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");

我是新來的,但如果你可以訪問現代 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() function。 此函數采用“搜索”函數/lambda 作為參數。
  • 此搜索 function 基本上采用一個元素並決定它是否是您搜索的那個,或者它是否返回 boolean。
  • 在我的示例中,箭頭 function 是c => c.aName === 'AssignmentName1' ,它比普通的 function 定義更短且更易於閱讀。 (你可以隨意撥打c ,這樣更干凈。)
  • 如果您接受多個結果而不僅僅是第一個,則可以將find()filter()交換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM