将新值传递给对象

Passing new value into an object

本文关键字:对象 值传 新值传      更新时间:2023-09-26

我似乎无法获得语法正确,以添加一个新的"艺术家"字段值为"ABBA"到专辑id 5439,我不断得到未定义的"艺术家"的错误,这是有意义的,但无论我以哪种方式插入,我似乎都错了。

代码的目的是检查值是不是轨道和空,然后添加新的属性变量传入,从值变量的值。我认为JSON可以添加obj。Prop = "value";但这似乎没有工作

// Setup
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"
    }
};
// Keep a copy of the collection for tests
var collectionCopy = JSON.parse(JSON.stringify(collection));
// Only change code below this line
function updateRecords(id, prop, value) {
  if(prop !== "tracks" && value !== null){
    collection.id[prop] = prop[value];
  }

  return collection;
}
// Alter values below to test your code
updateRecords(5439, "artist", "ABBA");

你得到的错误是:

VM5865:33 Uncaught TypeError: Cannot set property 'artist' of undefined

表示collection.idundefined。这是有意义的,因为collection没有id属性。

您还设置了错误的value

替换:

collection.id[prop] = prop[value];

:

collection[id][prop] = value;

collection[id]是您需要的集合。[prop]用于瞄准集合的"artist"属性。value是要存储为"artist"的值

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" } };
// Keep a copy of the collection for tests
var collectionCopy = JSON.parse(JSON.stringify(collection));
// Only change code below this line
function updateRecords(id, prop, value) {
  if (prop !== "tracks" && value !== null) {
    collection[id][prop] = value;
  }
  return collection;
}
// Alter values below to test your code
var result = updateRecords(5439, "artist", "ABBA");
console.log(result['5439'])

collection.id[prop] = prop[value];

Collection没有名为id的属性。id直接是集合对象的属性。

collection[id][prop] = prop[value];