迭代json对象并为其添加索引

时间:2017-07-23 07:33:46

标签: javascript json

我想将索引附加到json对象的末尾,该对象将从' 1'开始。如果' seq'是1,如下例所示。

我当前的代码只是迭代而+1而没有检查' 1'的后续条件。

for (var i = 1; i <= $scope.myDataset.length; i++) {
    $scope.myDataset[i - 1].index = i;
}

这就是我想要的。在为其附加索引之后。

$scope.myDataset = [
    {   
        seq:        '1',
        index: '1',
    },
    {
        seq:        '2',
        index: '1',
    },
    {
        seq:        '3',
        index: '1',
    },
    {
        seq:        '4',
        index: '1',
    },
    {
        seq:        '1',
        index: '2',
    },
    {
        seq:        '2',
        index: '2',
    },
    {
        seq:        '3',
        index: '2',
    },
];

3 个答案:

答案 0 :(得分:1)

可以试试这个:

var cnt = 0;

for (var i = 0; i < $scope.myDataset.length; i++) {
    if ($scope.myDataset[i].seq === '1') cnt++;
    $scope.myDataset[i].index = cnt;
}

答案 1 :(得分:0)

使用if语句检查此seq值是否为1,以便将索引添加到其中,或者如果未将index设置为0。

FK's

答案 2 :(得分:0)

您可以使用forEach循环对象并有条件地设置index属性:

&#13;
&#13;
var $scope = {},
    i = 0;
$scope.myDataset = [{
    seq: '1'
  },
  {
    seq: '2'
  },
  {
    seq: '3'
  },
  {
    seq: '4'
  },
  {
    seq: '1'
  },
  {
    seq: '2'
  },
  {
    seq: '3'
  },
];
$scope.myDataset.forEach(function(elt) {
  elt.index = (elt.seq === '1') ? ++i : i;
});
console.log($scope.myDataset);
&#13;
&#13;
&#13;

相关问题