如何根据数组长度向值为0或1的嵌套数组添加索引

时间:2018-10-13 09:06:03

标签: javascript arrays object

我想知道如何执行这样的任务: 我有一些数组:

var x = [
            {
                "place": 1,
                "name": 'Steve',
            },
            {
                "place": 4,
                "name": 'Ann',
            },
            {
                "place": 9,
                "name": 'John',
            },
        ];

现在我想添加新值,该值将保留索引号,结果为:

var x = [
            {
                'index':0,
                "place": 1,
                "name": 'Steve',
            },
            {
                'index':1,
                "place": 4,
                "name": 'Ann',
            },
            {
                'index':2,
                "place": 9,
                "name": 'John',
            },
        ];

我已经尝试过了,但是看来这是一个糟糕的解决方案,无法正常工作:

for (var i = 0; i < x.length; i++) {
            arr.push(x['index'],i);
        }

感谢您的帮助,我也不想为此感到烦恼,但是如果也可以在以下方面提供帮助,那将是多余的: 是否有可能将“索引”值设置为0或1,所以例如,如果我在数组中有5个项目,是否有任何方法可以使用模运算符在循环中进行检查并将索引值指定为0、1,0、1 ,0? 最好的问候。

var x = [
            {
                'index':0,
                "place": 1,
                "name": 'Steve',
            },
            {
                'index':1,
                "place": 4,
                "name": 'Ann',
            },
            {
                'index':0,
                "place": 9,
                "name": 'John',
            },
            {
                'index':1,
                "place": 9,
                "name": 'John',
            },
            {
                'index':0,
                "place": 9,
                "name": 'John',
            },
        ];

5 个答案:

答案 0 :(得分:3)

您可以像这样使用.forEach()和模运算符:

var x = [
  {"place": 1, "name": 'Steve'},
  {"place": 4, "name": 'Ann'},
  {"place": 9, "name": 'John'}
];

x.forEach((o, i) => (o.index = i % 2));

console.log(x);

答案 1 :(得分:2)

您可以循环遍历数组,并向每个对象添加一个index值。它们可以是连续的或备用的,如下所示:

var x = [ { "place": 1, "name": 'Steve' },
          { "place": 4, "name": 'Ann' },
          { "place": 9, "name": 'John' }
        ];
        
for (let i = 0; i < x.length; i++) {
    x[i].index = i;
}
    
console.log(x);
    
for (let i = 0; i < x.length; i++) {
    x[i].index = i % 2;
}
    
console.log(x);

答案 2 :(得分:2)

您只需要为数组中的每个对象指定新属性:

for (var i = 0; i < x.length; i++) {
        x['index']=i;    
}

如果要将0和1交替用作索引值,则应使用mod运算符并检查该值是否等于0:

for (var i = 0; i < x.length; i++) {
        x['index']=(i % 2 == 0);    
}

答案 3 :(得分:0)

首先,您要对对象进行数组处理,因此您需要在数组上运行并为每个对象添加新的“ index”属性。

x.forEach(function(obj, index){
   obj['Index'] = index;
})

现在知道你是否想要0-1-0-1 ...

id做得像htis:

var count = 0;

    x.forEach(function(obj){
      if(count==0){
        obj['Index'] = --count;
      }else{
       obj['Index'] = ++count;
      }
    })

答案 4 :(得分:0)

您可以说:

x.forEach(function(val, index) {
    //depending on the index you need
    val.index = index // or = index % 2 
})

然后,x将具有您需要的附加键index。让我知道这是否无济于事。