使用函数将一个对象添加到对象数组中?

4

我理解向数组中添加对象所需的命令。我知道它是array.push(object)

但是,假设我有这样一个对象数组:

const artists = [{
    "rank": 1,
    "name": "Rakim",
    "year": 1985,
    "album": "Paid in Full",
  },
  {
    "rank": 2,
    "name": "Nas",
    "year": 1994,
    "album": "Illmatic"
  }
]

如果我需要添加一个带有函数的新模块,我该如何操作?我想要创建一个可以在未来添加多个模块的函数。
例如: ``` function addModule() { // 添加新模块的代码 } ```
function addArtist(array {}) {
  return array;
}

console.log(addArtist(array {
  new object here
}));

你有语法错误... 在第一个对象中添加 "album": "Paid in Full",}, - نور
artists.concat( newObject ) - Mechanic
3个回答

5
你需要使用 展开运算符,将一个包含对象的 array 传递给函数,并将其添加到初始的 artists 中(它应该是 let 声明的)。

let artists = [
  {
    "rank": 1,
    "name": "Rakim",
    "year": 1985,
    "album": "Paid in Full"
  },
  {
    "rank": 2,
    "name": "Nas",
    "year": 1994,
    "album": "Illmatic"
  }
]


function addArtist (artistsToAdd) {
     artists.push(...artistsToAdd);
     return artists;
}

const objects = [
  {
    "rank": 3,
    "name": "Bob",
    "year": 1995,
    "album": "Album3"
  },
  {
    "rank": 4,
    "name": "Nas",
    "year": 1992,
    "album": "Album4"
  }
];
console.log(addArtist(objects));

你也可以使用concat来添加列表中的对象。


1

如果您想将代码分成多个文件,并且不想使用全局artists变量污染全局范围,或者您有多个具有artists接口的变量,那么您可以使用:

function addToArtists(artists, ...newArtists) {
  artists.push(...newArtists);
  return artists;
}

上面的脚本修改了作为第一个参数传递的数组,因为在JavaScript中,数组是引用类型。
然而,上面提出的函数(没有类型检查)基本上是通用的addToArray函数。因此,从编程风格的角度考虑,我会选择更精确的实现,例如:
function addArtist(artists, rank, name, year, album) {
  artists.push({rank, name, year, album});
  return artists;
}

0
如果您只需要一次添加一个新的艺术家 - 例如,从页面上用户输入,您可以这样做:

const artists = [{
    "rank": 1,
    "name": "Rakim",
    "year": 1985,
    "album": "Paid in Full"
  },
  {
    "rank": 2,
    "name": "Nas",
    "year": 1994,
    "album": "Illmatic"
  }
]

function addNewArtist(r, n, y, a) {
  artists.push({"rank": r, "name": n, "year": y, "album": a});
}

addNewArtist(3, "Bob", 1999, "His new one");
addNewArtist(4, "Joe", 2015, "His latest one");

console.log(artists);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接