JS 前端排序 数组指定项移动到最后

Posted 码小余の博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS 前端排序 数组指定项移动到最后相关的知识,希望对你有一定的参考价值。

JS 前端排序 数组指定项移动到最后

在这里插入图片描述

问题来源:模仿win10文件夹中按类型排序
文件夹在上,文件在下,并且点击按类型排序后,文件夹和文件会各自按首字母进行排序

/**
 * 数组指定元素移动到最后的位置
 * @param {*} arr 需要排序的数组
 * @param {*} sourceIndex 需要移动的元素的索引
 * @param {*} targetIndex 目标索引
 */
function moveArray(arr, sourceIndex, targetIndex) {
  // splice 将目标元素替换并将原结果扔回来赋值给它
  arr[sourceIndex] = arr.splice(targetIndex, 1, arr[sourceIndex])[0];
}

var arr = [
  {
    id: 0,
    name: "Rose",
    type: "dircetory",
  },
  {
    id: 1,
    name: "Robin",
    type: "file",
  },
  {
    id: 2,
    name: "Tom",
    type: "dircetory",
  },
  {
    id: 3,
    name: "Taide",
    type: "file",
  },
  {
    id: 4,
    name: "Danni",
    type: "dircetory",
  },
];

// 索引数组(需要移动的元素索引数组)
var sourceIndexes = [];
arr.forEach((item, index) => {
  if (item.type == "file") {
    sourceIndexes.push(index);
  }
});

// 遍历索引数组,移动元素
sourceIndexes.forEach((sourceIndex) => {
  moveArray(arr, sourceIndex, arr.length);
});

// 过滤数组,去除 undefined 项
var result = arr.filter((item) => {
  return item !== undefined || !!item;
});
console.log(result);

输出结果

[
  { id: 0, name: 'Rose', type: 'dircetory' },
  { id: 2, name: 'Tom', type: 'dircetory' },
  { id: 4, name: 'Danni', type: 'dircetory' },
  { id: 1, name: 'Robin', type: 'file' },
  { id: 3, name: 'Taide', type: 'file' }
]

以上是关于JS 前端排序 数组指定项移动到最后的主要内容,如果未能解决你的问题,请参考以下文章

JS(TS)中数组常见的方法(未完待续)

js面试常考之数组冒泡排序

js tool 方法之删除数组指定项

有一个js数组,已排序,现在需要移动某些元素到特定的位置,这种实现

js删除数组元素中的指定值

php 数组 将指定元素移至末尾