gpt4 book ai didi

javascript - 过滤 JSON 中的某些值

转载 作者:行者123 更新时间:2023-11-30 15:35:16 24 4
gpt4 key购买 nike

我有一个像这样的 JSON 对象:

 var test = {"employees": [
{"name":"John","klasse":12,"fach":"BW"},
{"name":"max", "klasse":13,"fach":"E"},
{"name":"Stef","klasse":14,"fach":"D"},
{"name":"abc", "klasse":15,"fach":"AM"},
{"name":"def", "klasse":17,"fach":"AM"},
{"name":"John","klasse":12,"fach":"D"}
]};

在我的 HTML 文件中,我有 3 个输入字段,它们应该给我在 JSON 对象中搜索的值。

<form ng-controller="Suche">
<span>Suchbegriff: </span><input type="text" ng-model="suchbegriff"> <br>
<span>Klasse: </span><input type="text" ng-model="klasse"> <br>
<span>Fach: </span><input type="text" ng-model="fach"> <br>

<input type="submit" ng-click="submit()">

<input type="submit" ng-click="sort()" value="Sort">

<table>
<tr>
<td>Name</td>
<td>Klasse</td>
<td>Fach</td>
</tr>

<tr ng-repeat="result in results">
<td>{{result.name}}</td>
<td>{{result.klasse}}</td>
<td>{{result.fach}}</td>
</tr>

<tr ng-hide="filter" ng-repeat="erg in json.employees">
<td>{{erg.name}}</td>
<td>{{erg.id}}</td>
<td>{{erg.fach}}</td>
</tr>

</table>

现在我的问题。例如,我想搜索名称“John”和 fach“D”。我当前的输出如下:

enter image description here

如您所见,我没有得到我想要的输出。它应该只列出名称为“John”klasse“12”和 fach“D”的第三行。

我该如何解决这个问题?

到目前为止,这是我的功能:

 $scope.submit = function () {
$scope.results = [];

var searchField = "name",
searchField2 = "klasse",
searchField3 = "fach";

var search = $scope.suchbegriff,
search_class = $scope.klasse,
search_subject = $scope.fach;

if(
search_subject == null || search_subject == ''
&& search == null || search == ''
&& search_class == null || search_class == ''
) {
$scope.filter = false;
}

for (var i=0 ; i < test.employees.length ; i++) {
if (
test.employees[i][searchField] == search ||
test.employees[i][searchField2] == search_class ||
test.employees[i][searchField3] == search_subject
) {
$scope.filter = true;
$scope.results.push(test.employees[i]);
}
}
};

感谢您的帮助!

最佳答案

问题在于,在 for... 循环中,您将推送匹配任一搜索条件的员工,而不是推送匹配所有提供的搜索条件的员工。尝试以下操作:

 $scope.submit = function () {
$scope.results = [];

var searchField = "name",
searchField2 = "klasse",
searchField3 = "fach";

var search = $scope.suchbegriff,
search_class = $scope.klasse,
search_subject = $scope.fach;

var hasSearch = !(search == null || search == ''),
hasSearch_class = !(search_class == null || search_class == ''),
hasSearch_subject = !(search_subject == null || search_subject == '');

$scope.filter = hasSearch || hasSearch_class || search_subject;

for (var i=0 ; i < test.employees.length ; i++) {
if (
(!hasSearch || test.employees[i][searchField] == search) &&
(!hasSearch_class || test.employees[i][searchField2] == search_class) &&
(!hasSearch_subject || test.employees[i][searchField3] == search_subject)
) {
$scope.results.push(test.employees[i]);
}
}
};

关于javascript - 过滤 JSON 中的某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41654291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com