Как добавить индекс во вложенный массив со значением 0 или 1 в зависимости от длины массива - PullRequest
0 голосов
/ 13 октября 2018

Мне интересно, как выполнить задачу следующим образом: у меня есть некоторый массив:

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);
        }

Спасибо за помощь с этим, и я не хочу быть greddy, ноЕсли бы также было возможно помочь со следующим, это было бы дополнительно: возможно ли иметь значения «index» как 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 голосов
/ 13 октября 2018

Вы можете сказать:

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

И, x будет иметь этот дополнительный ключ index со значениями, которые вам нужны.Дайте мне знать, если это не поможет.

0 голосов
/ 13 октября 2018

Вам нужно только указать новый атрибут для каждого объекта в массиве:

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

Если вы хотите чередовать 0 и 1 в качестве значений индекса, вы должны использовать оператор мода и проверить, еслизначение равно 0:

for (var i = 0; i < x.length; i++) {
        x['index']=(i % 2 == 0);    
}
0 голосов
/ 13 октября 2018

Вы можете использовать .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);
0 голосов
/ 13 октября 2018

Прежде всего, вы массив объектов, поэтому вам нужно запустить массив и добавить каждому объекту новое свойство "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;
      }
    })
0 голосов
/ 13 октября 2018

Вы можете просто пройти через массив и добавить значение 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...