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);
返回的对象包含 JSON 字符串中的所有数据。要访问分配数组,您可以使用点表示法。
const assignments = parsedJSON.assignments;
如果您不需要支持旧浏览器,ES6 有一个方便的函数可以在对象中查找值。使用“查找”函数并传递一个 returns 对您要查找的项目为真的函数:
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()
函数。此函数以 'search'-function/lambda 作为参数。
- 此搜索功能基本上采用一个元素并决定它是否是您要搜索的那个,或者不是 returns 布尔值。
- 在我的示例中,箭头函数是
c => c.aName === 'AssignmentName1'
,它比普通函数定义更短且更易于阅读。 (你可以随便叫c
,这样更干净。)
- 如果您接受多个结果而不仅仅是第一个,您可以将
find()
与 filter()
交换。
示例 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);
返回的对象包含 JSON 字符串中的所有数据。要访问分配数组,您可以使用点表示法。
const assignments = parsedJSON.assignments;
如果您不需要支持旧浏览器,ES6 有一个方便的函数可以在对象中查找值。使用“查找”函数并传递一个 returns 对您要查找的项目为真的函数:
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()
函数。此函数以 'search'-function/lambda 作为参数。 - 此搜索功能基本上采用一个元素并决定它是否是您要搜索的那个,或者不是 returns 布尔值。
- 在我的示例中,箭头函数是
c => c.aName === 'AssignmentName1'
,它比普通函数定义更短且更易于阅读。 (你可以随便叫c
,这样更干净。) - 如果您接受多个结果而不仅仅是第一个,您可以将
find()
与filter()
交换。