Как отсортировать числовое c строковое поле с помощью lodash - PullRequest
0 голосов
/ 22 апреля 2020
  sortedDatawithfield = (field, data) => {
    let res = _.sortBy(data, [field]);
    return res
  } 



  data = [
    {
      "cpm": "9.839933",
      "ctr": "8.508846",
      "cpc": "0.115644",
      "spend": "11.68",
      "date_start": "2020-03-18",
      "date_stop": "2020-03-18",
      "index": 19
    },
    {
      "cpm": "11.440139",
      "ctr": "8.849046",
      "cpc": "0.129281",
      "spend": "19.78",
      "date_start": "2020-03-17",
      "date_stop": "2020-03-17",
      "index": 18
    },
    {
      "cpm": "12.720915",
      "ctr": "8.518754",
      "cpc": "0.149328",
      "spend": "20.01",
      "date_start": "2020-03-16",
      "date_stop": "2020-03-16",
      "index": 17
    },
    {
      "cpm": "9.601182",
      "ctr": "6.351551",
      "cpc": "0.151163",
      "spend": "19.5",
      "date_start": "2020-03-22",
      "date_stop": "2020-03-22",
      "index": 21
    }
  ]


  res = this.sortedDatawithfield("cpc", data)
  console.log(res)

Здесь я пытаюсь отсортировать поле "cp c", используя loda sh.

. Выше написанная функция не работает должным образом. Я думаю, потому что он находится в строковом формате цифра c.

Есть ли способ сортировки по строке цифра c, используя loda sh

Ответы [ 2 ]

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

Вы можете изменить:

this.sortedDatawithfield("cpc", data)

... на:

this.sortedDatawithfield(item => parseFloat(item.cpc), data)

Это должно работать, поскольку _.sortBy принимает функции селектора.

0 голосов
/ 22 апреля 2020

Вместо lodash вы можете использовать встроенную в скрипт java функцию sort.

const data = [{
    "cpm": "9.839933",
    "ctr": "8.508846",
    "cpc": "0.115644",
    "spend": "11.68",
    "date_start": "2020-03-18",
    "date_stop": "2020-03-18",
    "index": 19
  },
  {
    "cpm": "11.440139",
    "ctr": "8.849046",
    "cpc": "0.129281",
    "spend": "19.78",
    "date_start": "2020-03-17",
    "date_stop": "2020-03-17",
    "index": 18
  },
  {
    "cpm": "12.720915",
    "ctr": "8.518754",
    "cpc": "0.149328",
    "spend": "20.01",
    "date_start": "2020-03-16",
    "date_stop": "2020-03-16",
    "index": 17
  },
  {
    "cpm": "9.601182",
    "ctr": "6.351551",
    "cpc": "0.151163",
    "spend": "19.5",
    "date_start": "2020-03-22",
    "date_stop": "2020-03-22",
    "index": 21
  }
];

const output = data.sort(({
  cpc: firstCpc,
  cpc: secondCpc
}) => Number(firstCpc) - Number(secondCpc));
console.log(output);
...