javascript - 无需推送即可将项目添加到数组中

标签 javascript ecmascript-6

尝试以不可变的方式将数组插入现有数组,但不知何故我的代码无法正常工作。

function insertItem(array, action) {
  return [
    ...array.slice(0, action.index),
    action.item,
    ...array.slice(action.index)
  ]
}

const ori_arr = [{
  id: 1,
  name: 'james',
  age: 10
}, {
  id: 2,
  name: 'terrance',
  age: 20
}]

console.log(insertItem(ori_arr, {
  action: {
    index: 1,
    item: {
       id: 3,
       name: 'she',
       age: 44
    }
  }
}))

索引部分可能有误。

最佳答案

由于您要添加的对象具有嵌套属性 action,您可能希望使用 destructuring 来获取 action 键您的 inserItem 函数的参数。

const insertItem = (array, { action }) => [
   ...array.slice(0, action.index),
   action.item,
   ...array.slice(action.index),
];

const ori_arr = [{
  id: 1,
  name: 'james',
  age: 10
}, {
  id: 2,
  name: 'terrance',
  age: 20
}]

console.log(insertItem(ori_arr, {
  action: {
    index: 1,
    item: {
       id: 3,
       name: 'she',
       age: 44
    }
  }
}))

Hover,如果您希望避免解构,只需更改 insertItem 函数中的第二个参数的名称,例如obj 然后在函数中的每个 action.index 之前添加 obj:

const insertItem = (array, obj) => [
   ...array.slice(0, obj.action.index),
   obj.action.item,
   ...array.slice(obj.action.index),
];

关于javascript - 无需推送即可将项目添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47282542/

相关文章:

javascript - 在 Cosmos DB 存储过程中使用 Javascript 获取 ISO-8601 格式的日期

javascript - React 16.13.1 - Prop 更改时子组件不会重新渲染

javascript - 捆绑 ES6 文件而不进行转译

javascript - setState 不适用于多个 onClick 函数

javascript - 重定向到错误页面 ReactJS 和 react-router

javascript - 返回不同值的命名类表达式

javascript - 如何将值与 ember 模板中的查找表进行比较

javascript - Firebase 电话身份验证后根据用户的角色重定向用户

javascript - Angular 4获取嵌套json

javascript - 如何为 SPA 创建 vanilla JS 路由?