js根据对象的id,删除数组对象里的某个值

一个数组对象

Array[
{ id:1, name: '黎明'}
{ id:2, name: '刘德华'},
{ id:3, name: '张学友'},
{ id:4, name: '郭富城'},
];

我想删除id为2的对象。

阅读 9.2k
3 个回答
// => [{"id":1,"name":"黎明"},{"id":3,"name":"张学友"},{"id":4,"name":"郭富城"}]
console.log(JSON.stringify(deleteById(2, [
  { id:1, name: '黎明'},
  { id:2, name: '刘德华'},
  { id:3, name: '张学友'},
  { id:4, name: '郭富城'},
])))

/**
 * 根据id删除数组项
 * @param {Number} id 需要删除的id
 * @param {Array} list 目标数组
 * 
 * @return {Array} 
 */
function deleteById (id, list) {
  for(let index = list.length - 1; index >= 0; index--) {
    if(list[index] && list[index].id === id) {
      list.splice(index, 1)
    }
  }
  return list
}
const array = [
    { id: 1, name: '黎明' },
    { id: 2, name: '刘德华' },
    { id: 3, name: '张学友' },
    { id: 4, name: '郭富城' }
];

第一种,不会改变原数组,返回的是一个新数组

const reslut = array.filter(v => v.id !== 2);

console.log(reslut);
// [
//     { id: 1, name: '黎明' },
//     { id: 3, name: '张学友' },
//     { id: 4, name: '郭富城' }
// ]

第二种,直接操作原数组(既然是id,我就认为数组每一项的id都不会重复)

array.splice(array.findIndex(v => v.id === 2), 1)

console.log(array);
// [
//     { id: 1, name: '黎明' },
//     { id: 3, name: '张学友' },
//     { id: 4, name: '郭富城' }
// ]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题