Сортировать массив в соответствии с вводом данных в Js - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть массив вроде:

Arr = [{name:"abc",age:1},{name:"a",age:4},{name:"ac",age:3},{name:"abc",age:2},{name:"abc",age:9}]

Я хочу изменить его следующим образом:

[{name:"abc",age:1},{name:"abc",age:2},{name:"abc",age:9},{name:"a",age:4},{name:"ac",age:3}]

путем сортировки или обменять его.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Вы можете собрать объекты с одинаковыми именами с Map и получить обратно полученные значения.

Этот подход сохраняет заданный порядок для name и группирует этот объект с тем же именем. вместе.

var array = [{ name: "abc", age: 1 }, { name: "a", age: 4 }, { name: "ac", age: 3 }, { name: "abc", age: 2 }, { name: "abc", age: 9 }];

array = Array
    .from(array
        .reduce((m, o) => m.set(o.name, [...(m.get(o.name) || []), o]), new Map)
        .values()
    )
    .flat();

console.log(array);
0 голосов
/ 26 февраля 2020

попробуйте

arr1.sort((a, b) => {
    if(a.name.startsWith(b.name)) { return -1; }
    if(a.name < b.name) { return -1; }
    if(a.name > b.name) { return 1; }
    return 0;
})
...