如果在json数据中删除angularjs中的特定元素?

时间:2015-09-04 13:27:22

标签: angularjs json ionic-framework

我正在使用角度js和离子框架。问题是我需要从来自API的jsondata中删除一个元素。

Json数据:

 [["abcd@gmail.com","joe"],["xyz@gmail.com","brain"],["hhh@gmail.com","bob"]];

我需要删除第二个元素" xyz@gmail.com"并且只展示剩余的元素

  [["abcd@gmail.com","joe"],["hhh@gmail.com","bob"]];

控制器条件:

   if(response.RETURN == "TRUE") {                   
        var listObject = JSON.parse(response.LIST); 
        $scope.ulist = listObject; 
     //HERE I NEED TO FILTER THAT  PARTICULAR ELEMENT 
    }

提前致谢

4 个答案:

答案 0 :(得分:2)

只需一个for循环即可,对吗?

$scope.ulist = [];
for (var i = 0, len = listObject.length; i < len; i++ ) {
    if(listObject[i][0] != "xyz@gmail.com") {
        $scope.ulist.push(listObject[i]);
    }
}

或者,使用Array.filter

$scope.ulist = listObject.filter(function (email) {
     return email[0] !== "xyz@gmail.com";
});

答案 1 :(得分:2)

最简单的解决方案是使用Javascript的拼接方法。

if(response.RETURN == "TRUE") {                   
    var listObject = JSON.parse(response.LIST); 
    listObject.splice(1,1); 
    $scope.ulist = listObject.; 
 //HERE I NEED TO FILTER THAT  PARTICULAR ELEMENT 
}

答案 2 :(得分:0)

处理此问题的最简单方法是使用lodash库,它将节省您的时间并使您的代码可读。

_.pullAt(array, [indexes])

从与给定索引对应的数组中移除元素,并返回已删除元素的数组。索引可以指定为索引数组或单个参数。

 var array = [5, 10, 15, 20];
    var evens = _.pullAt(array, 1, 3);

    console.log(array);
    // → [5, 15]
    console.log(evens);
    // → [10, 20]

,在你的情况下:

var listOfFilteresObjects = _.pullAt(listOfObjects,2); 

那就是兄弟,

干杯

答案 3 :(得分:0)

   var testArr = [["abcd@gmail.com", "joe"],
                  ["xyz@gmail.com", "brain"],
                  ["hhh@gmail.com", "bob"]];

   var customFilter = function(arr, filterStr) {
       var result = [];
       angular.forEach(arr, function (a1) {
           var tmp = a1;
           var idx = 0;
           angular.forEach(tmp, function (a2) {
               if ((a2 !== filterStr)
               && (idx === 0)) {
                   result.push(tmp);
               }
               idx++;
           });
       });
       return result;
   }

   var filteredTestArr = customFilter(testArr, "xyz@gmail.com");