Как создать объект или массив, который будет начинаться с определенного номера?

#javascript #arrays #object

#javascript #массивы #объект

Вопрос:

Я хотел бы создать объект или массив, который начнет цикл с # 32. Я пробовал что-то вроде этого:

 var test = [{'recID':"32",'optionalCol':"first",'recID':"33",'optionalCol':"last",'recID':"34",'optionalCol':"age"}];
  

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

 for(var i=32; i < test.lenght; i  ) {
    console.log(test[i].recID);
}
  

Мне интересно, возможно ли это и как мой объект / массив должен быть структурирован, чтобы иметь возможность запускать мой цикл с 32? Если кто-нибудь может помочь, пожалуйста, дайте мне знать.

Комментарии:

1. Этого не должно быть test.length test.lenght , не уверен, что это была просто опечатка.

2. является ли 32 индексом? или это связано с идентификатором RecId? например, вам нужно начать итерацию, где RecId = 32?

3. Кроме того, ваш тестовый параметр — это не array, это object . Таким образом, вы не можете получить доступ к его элементам путем индексации (вот почему test[32] не работает)

4. Я должен начать свой цикл с 32, поэтому мой RecId должен быть индексом.

5. ваши свойства будут перезаписаны.

Ответ №1:

Что вы хотите сделать, это использовать ассоциативный массив, подобный этому:

 var test = {
    32: "first",
    33: "last",
    34: "age"
}
  

Вы можете выполнить итерацию объекта следующим образом:

 for (t in test) {
    console.log(test[t])
}
  

Или просто быстро получить доступ к элементу следующим образом:

 console.log(test[33])
  

Проверьте jsfiddle: https://jsfiddle.net/xo0vuejt /

Комментарии:

1. @MartinGotteweis Как я могу проверить длину тестовой переменной? Обычно я делал это с помощью test. длина, но я не уверен, что это сработает в этом случае.

2. .length только для массивов. Вы можете использовать Object.keys(test).length . Примет Object.keys() объект и вернет массив ключей объекта.

Ответ №2:

Вы могли бы использовать объект с числами в качестве ключей и с объектами внутри, который отражает значения в вашем данном примере.

 var test = {
    32: {
        'recID': "32",
        'optionalCol': "first"
    },
    33: {
        'recID': "33",
        'optionalCol': "last"
    },
    34: {
        'recID': "34",
        'optionalCol': "age"
    }
};
  

Эта структура позволяет получить доступ к свойству с

 test[33].optionalCol
  

Выполните итерацию с

 Object.keys(test).forEach(function (key, i, keys) {
    // test[k] ...
});
  

Количество свойств объекта

 Object.keys(test).length // 3