如何按属性值按字母顺序对返回的累加器排序? -Javascript

时间:2019-02-06 10:43:23

标签: javascript

我正在尝试编写一个JavaScript函数来显示多个下拉列表。如您所见。 State.data包含整个api数据。这里this.state.data是一个对象数组。

我想按属性值对返回的累加器进行排序。值和标签基本相同

  getOptions(propertyName) {
return this.state.data.reduce((accum, elem, i) => {
  const accumulator = [...accum];
  if(!accumulator.some((e) => { return e.value === elem[propertyName]; })) {
    if(elem[propertyName] !== '' && elem[propertyName] !== '-') {
      accumulator.push({
        id: i,
        value: elem[propertyName],
        label: elem[propertyName]
      });
    }
  }
  return accumulator;
}, []);
 }

我只想使用纯JS。我可以使用lodash,但不能使用Jquery。我对使用纯香草JS更感兴趣

1 个答案:

答案 0 :(得分:0)

如果要使用比较器函数使用特定属性进行比较:

data.sort(function (a,b) {
    return a.propertyName > b.propertyName ? 1 : b.propertyName > a.propertyName ? -1 : 0;
})

通常,如果要按字母顺序对字符串(不是对象)数组进行排序,只需对数据调用sort()。如果需要降序调用reverse()