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

时间:2015-02-23 22:53:04

标签: javascript sorting

这个问题接近这个问题:Sort array of objects by string property value in 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);

对象返回不变。

1 个答案:

答案 0 :(得分:4)

你关闭了:

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

如果要按某些计算值访问属性,请使用[ ]运算符而不是.。实际上,您的代码始终只查找名为&#34; sortBy&#34;的属性,并且忽略了传入的参数。