Я пытаюсь воспроизвести очень простую функцию, которую я могу использовать для работы с массивами, но не с объектами. Я просто хочу иметь возможность запустить функцию, которая регистрирует следующий номер объекта, как с массивом чисел.
Возьмите этот рабочий массив в качестве примера:
var numbers = [4,2,6],
count = 0;
incrementArr();
function incrementArr() {
if (count < numbers.length) { // if not last array element
console.log(numbers[count]);
count++;
} else {
console.log(numbers[0]);
count = 1;
}
}
Каждый раз, когда вы запускаете incrementArr функция, она просто запишет следующий номер, а затем вернется к началу, если текущее состояние (количество) будет в конце.
Однако я не могу повторить тот же принцип с этим списком объектов:
var objs = {
first: { // doesn't have to have 'first'
"number": 4
},
second: { // doesn't have to have 'second'
"number": 2
},
third: { // doesn't have to have 'third'
"number": 6
}
},
count = 0;
incrementObj();
function incrementObj() {
if (count < Object.keys(objs).length) { // if not last obj element
//objs["first"].number
console.log(objs[count].number);
count++;
} else {
console.log(objs["first"].number); // what if no "first" in objects?
count++;
}
}
- Как функция
incrementObj
могла бы работать так же, как и предыдущая функция incrementArr
?
Кажется, я не могу выбрать конкретную c экземпляр объекта (например, numbers [1] из массива выберет 2-е число, но только objs [«second»]. number выберет 2-й объект, который не повторяется, если вы понимаете, что я имею в виду). Как я могу найти обходной путь для типичных обстоятельств, подобных этому?
Итак, в чем разница между:
first: { // doesn't have to have 'first'
"number": 4
}
и:
{ // doesn't have to have 'first'
"number": 4
}
Почему у "первых" эт c? (называется ключом?)
Есть ли вообще лучший способ работы со списками объектов (это сложно объяснить)? Спасибо за любой совет здесь.