Javascript在JSON中查找对象(我使用Angular)
Javascript find objects in JSON (i use Angular)
我有JSON对象:
{
"user": { "success":true },
"user1": { "success":false, "error":"User already exists" },
"user2": { "success":true, "error":"Wrong credentials" },
"user3": { "success":false, "error":"Wrong credentials" }
}
我需要在success: true
。如:user
、user2
。
也许Angular有一个解决方案?
您不能只使用Angular forEach循环通过列表
var users = [];
angular.forEach(list, function (value, user) {
if (value.success == true) {
alert(user)
users.push(user)
}
});
检查小提琴https://jsfiddle.net/b4yqench/
将具有属性的对象转换为数组
首先将具有属性的对象转换为数组。数组在AngularJS中更有用,尤其是在过滤和排序方面:
var users = {
"user":{"success":true},
"user1":{"success":false,"error":"User already exists"},
"user2":{"success":true,"error":"Wrong credentials"},
"user3":{"success":false,"error":"Wrong credentials"}
};
$scope.users = [];
angular.forEach(users, function(item, key) {
$scope.users.push({ name: key, data: item } );
});
在视图中使用过滤器
您可以使用"|"运算符在视图中进行筛选:
<ul>
<li ng-repeat="user in users | filter:{ data: { success:'true'} }">
{{ user }}
</li>
</ul>
在控制器中使用滤波器
或者,您可以在控制器中使用$filter服务:
$scope.filtered = $filter('filter')($scope.users, { data: { success:'true' }});
那么在你看来:
<ul>
<li ng-repeat="user in filtered ">
{{ user }}
</li>
</ul>
var app = angular.module('app', []);
app.controller('ctrl', function($scope, $filter) {
var users = {
"user": {
"success": true
},
"user1": {
"success": false,
"error": "User already exists"
},
"user2": {
"success": true,
"error": "Wrong credentials"
},
"user3": {
"success": false,
"error": "Wrong credentials"
}
};
$scope.users = [];
angular.forEach(users, function(item, key) {
$scope.users.push({
name: key,
data: item
});
});
$scope.filtered = $filter('filter')($scope.users, {
data: {
success: 'true'
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl">
<h2>Use Filter in View</h2>
<ul>
<li ng-repeat="user in users | filter:{ data: { success:'true'} }">
{{ user }}
</li>
</ul>
<h2> Use Filter in Controller</h2>
<ul>
<li ng-repeat="user in filtered ">
{{ user }}
</li>
</ul>
</div>
使用UNDERSCORE
var data = {
"user": { "success":true },
"user1": { "success":false, "error":"User already exists" },
"user2": { "success":true, "error":"Wrong credentials" },
"user3": { "success":false, "error":"Wrong credentials" }
}
var filtered = _.chain(data)
.values()
.filter(function(x){return x.success === true})
.value();
var myKeys = [];
for (var key in yourJson) {
if (yourJson[key].success) {
myKeys.push(key);
}
}
因此,我首先创建了一个名为myKeys的数组
然后,我会循环遍历你Json对象的键对于存在的每个密钥,如果您Json的密钥的属性"success"等于true,我将其添加到数组
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 将JSON对象传递给angular指令
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 将复杂对象从angular js传递到web api,它总是返回404
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Angular:使用选择列表选择过滤代码中的对象
- 在模板angular 2中显示JSON对象
- 如何按对象反转Angular ngRepeat的顺序's键,这些键是数字键
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- 向Angular作用域对象添加对象数组——TypeError
- AngularJS中的依赖注入仅适用于Angular“对象”吗?
- 在Angular对象中循环时向HTML添加id
- 给Angular对象添加属性
- 使用 jqlite 定位 Angular 对象
- NgFor/NgIf中的Angular 2对象插值问题
- 动态地用angular. foreach()中的键和值创建angular对象
- 如何将Angular对象传递给Google Chrome扩展中的Javascript函数?
- 我可以在未在作用域中定义的全局 javascript 函数中使用 Angular 对象作为参数吗?
- 如何访问 Angular 2 对象的属性
- 访问Angular对象's函数