Локальная карта Чарльза не работает для данных JSON?

Ключи в объектах JS должны быть уникальными.

Что происходит, это:

var obj = {
    key : value1
}

устанавливает obj['key'] в value1.

последующее объявление key : value2 перезаписывает ваш предыдущий.


Возможное решение вашей проблемы:

var obj = {
    key : [value1, value2]
}

for (var i in obj)
{
    if (obj[i] instanceof Array)
    {
        for (var k; k < obj[i].length; k++)
        {
            console.log(obj[i][k])
        }
    }
    else
    {
        console.log(obj[i]);
    }
}

Другое, возможно, более элегантное решение было бы измените способ хранения ваших данных следующим образом:

var obj = [
    { key : 'SomeKey'     , value : 'foo' },
    { key : 'SomeKey'     , value : 'bar' },
    { key : 'SomeOtherKey', value : 'baz' }
];

Это, очевидно, позволяет использовать несколько записей с одним и тем же ключом. Запрос можно выполнить где-то по этим строкам:

values = [];
for (var i = 0; i < obj.length; i++)
{
    if (obj[i].key === 'SomeKey')
    {
        values.push(obj[i].value);
    }
}

console.log(values);
13
задан Erik Engheim 17 February 2014 в 12:44
поделиться