2015-09-28 3 views
0

Я имею этот формат в моем сценарииКак динамически добавлять значения в JSON массива с помощью индекса

//declaration of JSON object 
items= {}; 
items.values= []; 

мне нужна структура, как это, который вставляется автоматически при выполнении сценария:

items : 
     { 
     key :['one', 'two', 'three', 'four'], 
     values: [1, 2, 3, 4] 
     } 

Поскольку элемент item.values ​​[0] не определен, он выдает мне неопределенную ошибку. Может кто-нибудь пожалуйста, скажите мне, как инициализировать объект JSON, так что он не будет бросать неопределенную ошибку

Я хотел вставить так:

var i=0; 
item.key[i]= 'one'; 
item.values[i]= 1; 

Я не уверен в том, что это лучшая практика, если кто-нибудь знает лучший способ, пожалуйста, опубликуйте его!

Заранее спасибо

+0

Вы определяете объект '' деталей, а затем вы пытаетесь получить доступ к объекту 'item' –

+0

Пожалуйста, покажите больше кода ... 'items.values' уже является массивом, но' items.key' не определено, и кажется, что у вас есть что-то назад в вопросе. Также это не «json object» ... нет такой вещи, поскольку json - это строковые данные – charlietfl

+0

Извините, что также указано items.key = []. Мне нужно сделать так: var i = 0; item.key [i] = 'one'; item.values ​​[i] = 1; – Ashokprakash

ответ

1

У вас есть правильная идея. Похоже, что ваше свойство добавлять ключи не существует. Давайте объявим два свойства: keys и values.

items= {}; 
items.keys = []; 
items.values= []; 

объект Наш JavaScript выглядит как этот

{ "keys": [], "values": [] } 

var words = ['one', 'two', 'three', 'four']; 
var numbers = [1,2,3,4]; 

Теперь вы хотите, чтобы перебирать с помощью for цикла. В JavaScript массивы 0-индексируются, что означает, что первый элемент имеет индекс 0. Вот почему мы инициализируем переменную i со значением 0. После каждой итерации мы увеличиваем эту переменную, а затем проверяем, меньше ли она длины массива.

function populateObject() { 
    for (var i = 0; i < words.length; i++) { 
     items.keys.push(words[i]); 
     items.values.push(numbers[i]); 
    } 
} 

А затем вызвать вашу функцию

populateObject(); 

Вот выход

{"keys": ["one", "two", "three", "four"], "values": [1, 2, 3, 4]} 
+0

Я нашел способ для своей проблемы. В любом случае спасибо за ответы и комментарии :) – Ashokprakash

Смежные вопросы