【问题标题】:sort array js (by field)排序数组js(按字段)
【发布时间】:2020-04-18 12:24:04
【问题描述】:

我有一个 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;
}

【问题讨论】:

标签: javascript arrays object key


【解决方案1】:

您可以迭代想要的键,映射值并获得平坦的结果。

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']));

【讨论】:

    【解决方案2】:

    你可以先对你的数组进行排序(灵感来自How to sort 2 dimensional array by column value?),然后返回想要的字段:

    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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-07
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多