【问题标题】:How to remove particular element in angularjs if its in json data?如果它在json数据中,如何删除angularjs中的特定元素?
【发布时间】:2015-09-04 13:27:22
【问题描述】:

我正在使用 Angular js 和 ionic 框架。问题是我需要从来自 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 
    }

提前致谢

【问题讨论】:

    标签: angularjs json ionic-framework


    【解决方案1】:

    只需一个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";
    });
    

    【讨论】:

      【解决方案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 
      }
      

      【讨论】:

        【解决方案3】:

        处理这个问题的最简单方法是使用 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); 
        

        兄弟,就是这样,

        干杯

        【讨论】:

          【解决方案4】:
             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");
          

          【讨论】:

          • 欢迎来到 Stack Overflow!一般来说,如果答案包含对代码的用途的解释,以及为什么在不介绍其他人的情况下解决了问题,那么答案会更有帮助。
          猜你喜欢
          • 2022-01-20
          • 1970-01-01
          • 2021-08-15
          • 1970-01-01
          • 1970-01-01
          • 2012-06-15
          • 2021-01-11
          • 1970-01-01
          • 2022-11-03
          相关资源
          最近更新 更多