Невозможно добавить новые данные в массив, который находится внутри объекта, используя vanilla JS - PullRequest
0 голосов
/ 03 июня 2018

У меня есть объект с именем collection с массивом с именем track, но когда я пытаюсь добавить данные в массив track с помощью метода push, я получаю сообщение об ошибке.Может кто-нибудь, пожалуйста, помогите мне.

  var collection = { .   //object with tracks property as array
        "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"
        }
    };


    function updateRecords(id, prop, value) { 
        let addNew = collection[id].tracks;
        console.log(coll);
        if (prop == "tracks" || prop == "artist") {
            if (collection[id][prop] == undefined) {
                collection[id][prop] = value;
            }
            else if (prop == "tracks" && value != "") { //to add new value to array inside the object
                addNew.push(value);  // getting error with arr.push method
            }
        }
        return collection;
    }

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

1 Ответ

0 голосов
/ 03 июня 2018

Вот как вы можете это сделать -

var collection = { //object with tracks property as array
  "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"
  }
};


function updateRecords(id, prop, value) {
  let addNew = collection[id];
  if (addNew) {
      if (addNew[prop])
          collection[id][prop].push(value);
      else
          collection[id][prop] = [value];
  }
  return collection;
}

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

console.log(collection);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...