按字段值作为参数对数组中的对象进行排序

Sorting objects in an array by field value as a parameter

本文关键字:对象 排序 数组 字段 参数      更新时间:2024-04-20

这个问题很接近这个问题:在JavaScript 中按字符串属性值对对象数组进行排序

但是,字段值应由用户选择(保存在sortBy参数中):

function sortList (sortBy, list) {
  return list.sort(function (val1, val2) {
    if (val1.sortBy > val2.sortBy) {
    return -1;
  }
  if (val1.sortBy < val2.sortBy) {
    return 1;
  }
  return 0;
  });
}
var myObj = [
  {a: 1, b: 3},
  {a: 3, b: 2},
  {a: 2, b: 40},
  {a: 4, b: 12}
];
sortList(myObj.a, myObj);

对象返回时保持不变。

您已接近:

function sortList (sortBy, list) {
  return list.sort(function (val1, val2) {
    if (val1[sortBy] > val2[sortBy]) {
    return -1;
  }
  if (val1[sortBy] < val2[sortBy]) {
    return 1;
  }
  return 0;
  });
}
var myObj = [
  {a: 1, b: 3},
  {a: 3, b: 2},
  {a: 2, b: 40},
  {a: 4, b: 12}
];
sortList("a", myObj);

如果要按某个计算值访问属性,请使用[ ]运算符而不是.。实际上,您的代码总是只查找一个名为"sortBy"的属性,而传入的参数被忽略。