假设我有一个单独的ID数组要移动(vanilla或Lodash),如何将数组中的一个或多个对象在索引中上移1个位置.

我大概会使用Splice(),但我不确定如何在这个更复杂的上下文中使用它.

例如:

// use this array of rowids

const rowsToBeMoved = ['row4', 'row5']; 

// target the objects bearing those row ids in an array of objects:

const rowsArr = [
  { rowid: "row0", name: "Mark Johnson" },
  { rowid: "row1", name: "Jill Trillian" },
  { rowid: "row2", name: "Alan Drangson" },
  { rowid: "row3", name: "Bill Greggory" },
  { rowid: "row4", name: "Alice Walker" },
  { rowid: "row5", name: "Kurt Rose" },
];

// move both objects up 1 position in the index so the result is this:

const orderedRowsArr = [
  { rowid: "row0", name: "Mark Johnson" },
  { rowid: "row1", name: "Jill Trillian" },
  { rowid: "row2", name: "Alan Drangson" },
  { rowid: "row4", name: "Alice Walker" },
  { rowid: "row5", name: "Kurt Rose" },
  { rowid: "row3", name: "Bill Greggory" },
];

这就是我到目前为止所拥有的.我能够获得要移动的行的索引,但我不知道如何对其应用Splice().

let moveIndexes = [];
this.rowsArr.forEach((row) => {
  moveIndexes.push(
    this.collection.rows.findIndex((r) => r.rowid === row.rowid)
  );
});

推荐答案

const rows = [
  { rowid: "row0", name: "Mark Johnson" },
  { rowid: "row1", name: "Jill Trillian" },
  { rowid: "row2", name: "Alan Drangson" },
  { rowid: "row3", name: "Bill Greggory" },
  { rowid: "row4", name: "Alice Walker" },
  { rowid: "row5", name: "Kurt Rose" },
]
const rowsToBeMoved = ['row4', 'row5']

let c = 0
let a = rowsToBeMoved.map(id=>rows.findIndex(i=>i.rowid===id)).sort()
console.log(rows.map((_,i)=>a.includes(i+1)?(c++, rows[i+1]):rows[i-c]))

Javascript相关问答推荐

如何解决chrome—extension代码中的错误,它会实时覆盖google—meet的面部图像?'

如何在angular中从JSON值添加动态路由保护?

Next.js(react)使用moment或不使用日期和时间格式

在Vite React库中添加子模块路径

成功完成Reducers后不更新状态

我可以使用使用node.js创建的本地主机来存储我网站上提交的所有数据吗?没有SQL或任何数据库.只有HTML语言

如何在coCos2d-x中更正此错误

有条件重定向到移动子域

如何将数组用作复合函数参数?

让chart.js饼图中的一个切片变厚?

Rxjs流中生成IMMER不能在对象上操作

使用RxJS from Event和@ViewChild vs KeyUp事件和RxJS主题更改输入字段值

在渲染turbo流之后滚动到元素

构建器模式与参数对象输入

通过解构/功能组件接收props-prop验证中缺少错误"

无法在Adyen自定义卡安全字段创建中使用自定义占位符

Google OAuth 2.0库和跨域开放程序的问题-策略错误

如何从嵌套的json中获取最大值

元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但GET:Object.在Reaction项目中

扩展更新所有输入的CSSprops 的函数