Мне интересно, как сделать задачу следующим образом: у меня есть некоторый массив:
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 элементов в массиве, есть ли способ сделать проверку в цикле с использованием modulo operaror и присвоить значение индекса как 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',
},
];
Вы можете использовать .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);
Вам нужно только указать новый атрибут для каждого объекта в массиве:
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);
}
Вы можете просто пройти через массив и добавить значение 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);
ты мог бы сказать:
x.forEach(function(val, index) {
//depending on the index you need
val.index = index // or = index % 2
})
И x
будет иметь дополнительный index
ключа со значениями, которые вам нужны. Дайте мне знать, если это не поможет.
прежде всего, вы массивы объектов, поэтому вам нужно запустить над массивом и добавить каждому объекту новое свойство "index".
x.forEach(function(obj, index){
obj['Index'] = index;
})
теперь, если вы хотите 0-1-0-1...
id do smth like htis:
var count = 0;
x.forEach(function(obj){
if(count==0){
obj['Index'] = --count;
}else{
obj['Index'] = ++count;
}
})
x = x.map((item, index) => Object.assign(item, { index: index % 2 }));
jsfiddle.net/k3ghxzeu/1nth-child
илиnth-of-type
.