繁体   English   中英

JavaScript - 更改数组中多个对象的索引 position

[英]JavaScript - change index position of multiple objects in array

假设我有一个单独的要移动的 id 数组(vanilla 或 Lodash),如何将数组中的一个或多个对象向上移动 1 position。

大概我会使用 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[ic]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM