我有一个对象数组。我试图过滤哪些没车?我的目标如下:
var obj = {
personName: 'John',
Car: {
Brand: 'A',
Age: 2
}
},{
personName: 'Alice',
Car: {
Brand: 'A',
Age: 2
}
},{
personName: 'Martin',
Car:{}
}]
我该怎么办?我不想使用$each
,for
循环或类似的东西。
答案 0 :(得分:1)
使用像
这样的递归函数var people = [{
personName: 'John',
Car: {
Brand: 'A',
Age: 2
}
}, {
personName: 'Alice',
Car: {
Brand: 'A',
Age: 2
}
}, {
personName: 'Martin',
Car: {}
}]
var count1 = people.length;
$scope.NoCar = function (arr, count2) {
if (count2 == 0)
return;
else {
if (arr[count2 - 1].Car == {} || arr[count2 - 1].Car == null) {
console.log("No Car");
}
count2--;
$scope.NoCar(arr, count2);
}
}
$scope.NoCar(people, count1);
我不确定代码是否有效,但我确定逻辑是正确的
答案 1 :(得分:0)
嗯,你可以使用本机javascript过滤器函数到数组:
$scope.noCar = obj.filter(function(v){
return !v.hasOwnProperty('Car') || !v.Car.hasOwnProperty('Brand');
});
并使用返回的数组。 (但这是$ filter使用的确切方法('过滤器'))https://github.com/angular/angular.js/blob/master/src/ng/filter/filter.js#L155
然后和上面的代码相同:
$scope.noCar = $filter('filter')(obj, function(v){
return !v.hasOwnProperty('Car') || !v.car.hasOwnProperty('Brand');
})
本机方法总是最有效的方法,直接在引擎上运行(V8等)