2016-06-22 3 views
0
var collection = { 
    "2548": { 
     "album": "Slippery When Wet", 
     "artist": "Bon Jovi", 
     tracks: [ 
     "Let It Rock", 
     "You Give Love a Bad Name" 
     ] 
    }, 
    "2468": { 
     "album": "1999", 
     "artist": "Prince", 
     "tracks": [ 
     "1999", 
     "Little Red Corvette" 
     ] 
    }, 
    "1245": { 
     "artist": "Robert Palmer", 
     "tracks": [ ] 
    }, 
    "5439": { 
     "album": "ABBA Gold" 
    } 
}; 

var collectionCopy = JSON.parse(JSON.stringify(collection)); 

function updateRecords(id, prop, value) { 
    if (!value) delete collection[id][prop]; 
    if (!!value && prop === 'tracks'){ 

    collection[id][prop] = []; // Solve my problem 

    collection[id][prop].push(value); 
    } 
    if (!!value && prop === 'artist') collection[id][prop] = value; 
    return collection; 
} 

updateRecords(5439, "tracks", "Take a Chance on Me"); 

Это оригинальный код, который возвращает ошибку. Это отредактировано и, пожалуйста, проигнорируйте этот вопрос. Попытка исправить ошибку, говорящей, что push - это неопределенная функция. Вы не можете нажать значение для объекта массива, если не определено, поэтому я положилКак разместить значение массива на вложенном массиве

[id] [prop] = []; // решить мою проблему

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

коллекция [ID] [проп] .С (значение);

+0

'коллекции [ "5439"] [ "следы"] = [ 'что-то'] '? – potashin

+1

Также это не вложенные массивы, это объект. –

+0

Это проблема = «Если prop содержит ключевые« дорожки », а его значение не пустое, тогда нажмите значение на конец существующего массива треков». –

ответ

3

Попробуйте следующие

collection["5439"].tracks = ["some info", "some more info"]; 
0

У вас есть объект collection и для того, чтобы доступ/обновить объект, вы можете использовать либо . или [] нотации. Чтобы использовать нотацию ., ключ должен быть действительным идентификатором. Идентификатор номера «5439» не является допустимым идентификатором и выдаст SyntaxError. Безопасный способ сделать это с помощью [] обозначения, как показано ниже:

collection["5439"]["tracks"] = [1, 2, 3, "a", "b"]; 
+0

Спасибо, ребята, моя проблема была решена, это как-то связано с функцией push(), которая не определена. Вы не можете использовать push() для неопределенного массива –

+0

Original Task = «Если prop содержит ключевые« дорожки », и его значение не пустое, а затем нажмите значение на конец существующего массива треков». –

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