关于.push()的JavaScript

时间:2018-10-09 16:47:14

标签: javascript

我正在网上搜索很长时间。但是没用。请帮助或尝试给出一些想法来实现这一目标。

var collection = {
        1245: {
          artist: "Robert Palmer",
          tracks: [ ]
        },
        5439: {
          album: "ABBA Gold"
        }
    };

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

    function update(id, prop, value) {
      if (value !== '' && prop == 'tracks') {
        collectionCopy[id][prop].push(value);

      return collectionCopy;
    }

    update(1245, "tracks", "Addicted to Love");


它说collectionCopy [id] [prop] .push(value)不是一个函数,我不知道为什么,但是collectionCopy [id] [prop]实际上是一个数组。 感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您在update()的if语句中缺少}。修复下面的代码就可以了:

var collection = {
        1245: {
          artist: "Robert Palmer",
          tracks: [ ]
        },
        5439: {
          album: "ABBA Gold"
        }
    };

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

    function update(id, prop, value) {
      if (value !== '' && prop == 'tracks') {
        collectionCopy[id][prop].push(value);
      }
      return collectionCopy;
    }

    update(1245, "tracks", "Addicted to Love");

输出:

{ 1245: { artist: 'Robert Palmer', tracks: [ 'Addicted to Love' ] },
  5439: { album: 'ABBA Gold' } }

答案 1 :(得分:0)

您的if语句未正确关闭。尝试使用通常可以为您执行此操作的IDE来更整洁地构造代码。代码应如下:

var collection = {
  1245: {
    artist: "Robert Palmer",
    tracks: []
  },
  5439: {
    album: "ABBA Gold"
  }
};

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

function update(id, prop, value) {
  if (value !== '' && prop == 'tracks') {
    collectionCopy[id][prop].push(value);
    return collectionCopy;
  }
}

update(1245, "tracks", "Addicted to Love");

console.log(collection);