сортировать массив js (по полю) - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть массив JavaScript объектов, что-то вроде этого:

const employe = [{
    id: 1,
    age: 22,
    sex: 'Male',
  },
  {
    id: 2,
    age: 23,
    sex: 'Female',
  },
  {
    id: 3,
    age: 33,
    sex: 'Male',
  }
]

Я хочу отсортировать их по ключу объекта: например: function sort(age, sex), и я получаю массив:

[22, 23, 33, 'male', 'female', 'male']

Я пытаюсь сделать что-то вроде этого:

function filterArr(arr, category) {
  let res = {};
  for (let key in arr) {
    if (arr[key].category == category)
      res[key] = arr[key];
  }
  return res;
}

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Вы можете перебрать нужные ключи, отобразить значение и получить плоский результат.

const
    getParts = (array, keys) => keys.flatMap(k => array.map(o => o[k])),
    employees = [{ id: 1, age: 22, sex: 'Male' }, { id: 2, age: 23, sex: 'Female' }, { id: 3, age: 33, sex: 'Male' }];

console.log(getParts(employees, ['age', 'sex']));
0 голосов
/ 18 апреля 2020

вы можете сначала отсортировать ваш массив (на основе Как отсортировать 2-мерный массив по значению столбца? ), а затем вернуть нужные поля:

const employe = [
    {
        id: 1,
        age: 22,
        sex: 'Male',
    },
    {
        id: 2,
        age: 23,
        sex: 'Female',
    },
    {
        id: 3,
        age: 33,
        sex: 'Male',
    }];

const sortEmploye = employe.sort(sortFunction);
console.log(returnWantedFields(sortEmploye));

function returnWantedFields(arr){
    const returnedArr = [];
    for (let i=0; i<arr.length; i++){
        returnedArr.push(arr[i]['age']);
    }
    for (let i=0; i<arr.length; i++){
        returnedArr.push(arr[i]['sex']);
    }
    return returnedArr;

}

function sortFunction(a, b) {
    if (a[0] === b[0]) {
        return 0;
    }
    else {
        return (a[0] < b[0]) ? -1 : 1;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...