Sow nothing reap nothing

数组排序 - 移动数组中指定元素到最前面

已有4,024次关注

实现思路:
根据特定key值来查找当前数组中的特定元素,判断key值与数组元素是否相等,相等时使用splice函数删除当前元素,使用break跳出循环,再使用unshift函数将key值添加到数组最前面。

举例:

let arr = [1,2,3,4];
let key = 2;

for(var i = 0; i < arr.length; i++){
    if(arr[i] === key){
        arr.splice(i, 1);
        break;
    }
}
arr.unshift(key);

返回结果为[2,1,3,4]。

如果是数组对象,只需要稍微改动代码即可:

let arr = [
    {
        "id": 1,
        "name": "eleven"
    },
    {
        "id": 2,
        "name": "babala"
    },
    {
        "id": 3,
        "name": "kangkang"
    },
    {
        "id": 4,
        "name": "stif"
    },
];
let key = 3;

let specifiedElem = [];
for (var i = 0; i < arr.length; i++){
    if (arr[i].id == key) {
        specifiedElem = arr[i];
        arr.splice(i, 1);
        break;
    }
}
arr.unshift(specifiedElem);

返回结果为:

arr = [
    {
        "id": 3,
        "name": "kangkang"
    },
    {
        "id": 1,
        "name": "eleven"
    },
    {
        "id": 2,
        "name": "babala"
    },
    {
        "id": 4,
        "name": "stif"
    },
];

已自动关闭评论