我有以下JSON对象:
{
'name' : 'John',
'friends' : [
{
'id' : 1,
'name' : 'George',
'level' : 10
},
{
'id' : 2,
'name' : 'Stacy',
'level' : 8
},
{
'id' : 3,
'name' : 'Fred',
'level' : 10
},
{
'id' : 4,
'name' : 'Amy',
'level' : 7
},
{
'id' : 5,
'name' : 'Bob',
'level' : 10
}
]
}
正如您所看到的,您有一个具有name
的对象(person?)和一个friend
个对象的数组。每个朋友对象都有id
,name
和level
。
我想做的是从该数组中选择所有10级朋友,并选择另一个名为var level10Friends
的变量/对象。
我正在使用AngularJS,所有这些都需要在我的控制器中进行,但这不一定是AngularJS特定的问题,欢迎使用vanilla JavaScript函数。
说实话,我甚至不知道这是否可行,搜索网络似乎没有带来任何类似的东西......
答案 0 :(得分:16)
使用
Array.prototype.filter()
。filter()
方法创建一个新的array
,其中包含通过所提供函数实现的测试的所有元素。
var users = {
'name': 'John',
'friends': [{
'id': 1,
'name': 'George',
'level': 10
}, {
'id': 2,
'name': 'Stacy',
'level': 8
}, {
'id': 3,
'name': 'Fred',
'level': 10
}, {
'id': 4,
'name': 'Amy',
'level': 7
}, {
'id': 5,
'name': 'Bob',
'level': 10
}]
};
var wantedData = users.friends.filter(function(i) {
return i.level === 10;
});
console.log(wantedData);
答案 1 :(得分:1)
试试这个:
var level10friends = list.friends.filter(function(p){return p.level == 10;});
答案 2 :(得分:1)
使用箭头功能,您可以执行以下操作:
table1_amount table2_amount
22 22
22 22
22 NULL
答案 3 :(得分:0)
今天早上刚发现这个插件 http://linqjs.codeplex.com/
它是一种使用linq函数查询JSON的方法。 我喜欢它^^
编辑:
您的案例的小例子:
var jsonArray = {your-json-array}
var level10Friends = Enumerable.From(jsonArray)
.Where("$.user.level == 10")
.Select("$.user.name")
.ToArray();
答案 4 :(得分:0)
看看!
angular
.module('test', [])
.value('user', {
'name' : 'John',
'friends' : [{
'id' : 1,
'name' : 'George',
'level' : 10
},
{
'id' : 2,
'name' : 'Stacy',
'level' : 8
},
{
'id' : 3,
'name' : 'Fred',
'level' : 10
},
{
'id' : 4,
'name' : 'Amy',
'level' : 7
},
{
'id' : 5,
'name' : 'Bob',
'level' : 10
}]
})
.controller('TestCtrl', function TestCtrl($scope, user) {
var vm = $scope;
vm.level10friends = (function(friends, REQUIRED_LEVEL) {
var res = [];
for(var friend, i = 0, len = friends.length; i < len; i++) {
friend = friends[i];
if(friend.level === REQUIRED_LEVEL) {
res.push(friend);
}
}
return res;
}).call(this, user.friends || [], 10);
})
;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<article ng-app="test">
<div ng-controller="TestCtrl">
<div ng-bind="level10friends | json"></div>
</div>
</article>