基于属性值拼接数组

时间:2016-04-09 08:03:23

标签: javascript angularjs

$scope.myJson = [{
    "id": "1",
    "name": "banana",
    "price": 12,
    "qty": 3,
  }, {
    "id": "2",
    "name": "watermelon",
    "price": 12.9,
    "qty": 4,
  }];

for(i = 0; i < $scope.myJson.length; i++) {
      if($scope.myJson[i]._id == '2'){

        //what to do here?
        //then save back to localstorage
      }
    }

我正在使用localstorage所以我必须找到数组并拼接它。我不知道该怎么办。

2 个答案:

答案 0 :(得分:0)

Splice在性能方面是最糟糕的选择。 但在你的情况下,你需要这样做:

$scope.myJson.splice(i,1);

请参阅此处的效果比较:https://jsperf.com/splice-vs-filter

我至少会做一个过滤器:

$scope.myJson = $scope.myJson.filter(function(obj) { return (obj.id !== '2'); }) ;

答案 1 :(得分:0)

只需遍历数组,搜索所需的属性值并拼接数组。

function spliced(array, value) {
    var arr = array.slice(0);


    array.forEach(function (obj) {
        if (obj.hasOwnProperty('id')) {
            if (obj['id'] == value ) {
                arr.splice(arr.indexOf(obj),1);
            }
        }
    });
    return arr;
}

console.log( spliced(arr, 1) )