[英]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 作为参数。c => c.aName === 'AssignmentName1'
,它比普通的 function 定义更短且更易于阅读。 (你可以随意拨打c
,这样更干净。)find()
与filter()
交换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.