嵌套JSON,使用angularjs在Jquery中根据条件删除对象
Nested JSON, remove object based on a condition in Jquery using angularjs
我有一个JSON对象在这个变量$scope.bbTreeData。我正试图删除标记为假的对象。我能够遍历嵌套的JSON对象,但我不确定如何删除对象?有什么建议吗?
[{
"market": "Atl",
"subItem": [{
"comment_id": "1",
"user_id": "32509",
"flag": true
}, {
"comment_id": "2",
"user_id": "32510",
"flag": false
}]
}, {
"market": "Chicago",
"subItem": [{
"comment_id": "3",
"user_id": "32501",
"flag": true
}, {
"comment_id": "4",
"user_id": "32502",
"flag": false
}]
}]
$scope.bbTreeInactiveData = angular.copy($scope.bbTreeData);
angular.forEach($scope.bbTreeInactiveData, function(item) {
angular.forEach(item.subItem, function(record, index) {
if (record.flag == false) {
console.log(item.subItem, index);
/* code to remove the object*/
}
});
});
可以使用_underscorejs的_without()
函数
参见文档
输入,
_。没有(数组,值)返回数组的副本,其中删除了所有值的实例。
_。无([1,2,1,0,3,1,4],0,1);
=> [2,3,4]
[
{
"market": "Atl",
"subItem": [
{
"comment_id": "1",
"user_id": "32509",
"flag": true
},
{
"comment_id": "2",
"user_id": "32510",
"flag": false
}
]
},
{
"market": "Chicago",
"subItem": [
{
"comment_id": "3",
"user_id": "32501",
"flag": true
},
{
"comment_id": "4",
"user_id": "32502",
"flag": false
}
]
}
]
[
{
"market": "Atl",
"subItem": [
{
"comment_id": "1",
"user_id": "32509",
"flag": true
}
]
},
{
"market": "Chicago",
"subItem": [
{
"comment_id": "3",
"user_id": "32501",
"flag": true
}
]
}
]
<<p> 代码片段/strong> var json = JSON.parse('[{"market":"Atl","subItem":[{"comment_id":"1","user_id":"32509","flag":true},{"comment_id":"2","user_id":"32510","flag":false}]},{"market":"Chicago","subItem":[{"comment_id":"3","user_id":"32501","flag":true},{"comment_id":"4","user_id":"32502","flag":false}]}]');
for(var i=0; i<json.length; i++) {
json[i].subItem = _.without(json[i].subItem, _.findWhere(json[i].subItem, {flag: false}));
};
console.log(JSON.stringify(json, 0, 8));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
试试这个:
$scope.bbTreeInactiveData = angular.copy($scope.bbTreeData);
var results = $scope.bbTreeInactiveData.map(function(row) {
return row.subItem.filter(function(cell) {
return cell.flag == true
});
});
使用map()和filter()函数
您可以在纯JavaScript中使用delete
关键字:
delete item.subItem[index]
我相信已经有一个答案:我如何从JavaScript对象中删除属性?
如果要删除根,请在第一个forEach
中添加索引参数,然后使用数组拼接函数删除根:
$scope.bbTreeInactiveData.splice(indexRoot,1);
相关文章:
- 在特定条件下从存储在localStorage中的阵列中删除对象
- 正则表达式条件来删除元素
- 如何根据某些条件向可编辑的jquery数据表添加或删除按钮
- jTable条件显示隐藏基于数据所有者的编辑和删除按钮
- 如何按条件删除对象中的对象
- gmaps.js删除基于特定条件的标记
- 根据事件有条件地阻止事件删除
- 根据条件删除数据行
- 根据条件从数组中删除对象
- 使用 OR 条件删除带有猫鼬的 MongoDB 中的文档
- Agularjs ng-class:如果其他条件变为真,则删除类
- 使用 jQuery 克隆表单,并添加和删除元素条件
- 如何在具有某些条件的情况下从列表中删除重复项,下划线.js
- 从带有条件的数组中删除字符串
- 根据一系列字符串条件删除行
- 有条件删除html节点
- 嵌套JSON,使用angularjs在Jquery中根据条件删除对象
- 根据条件删除嵌套JSON中的元素
- 使用JQuery根据条件删除元素
- 你会使用数组吗?Map,根据条件删除它所作用的元素