Как запросить документ с наибольшим значением поля - PullRequest
1 голос
/ 18 апреля 2019

Допустим, у меня есть коллекция документов. Чтобы сделать это проще, допустим, что во всех этих документах есть только 2 поля, имя и идентификатор, как показано ниже.

Я хочу получить документ с наибольшим значением «id». Могу ли я использовать .find ({}) с некоторыми параметрами? Если это так, я не могу понять, какой параметр найдет для меня максимальное значение определенного поля.

[
  {
    name: "name1",
    id: 1
  }
  {
    name: "name2",
    id: 2
  }
  {
    name: "name1",
    id: 3
  }
  {
    name: "name1",
    id: 0
  }
]

Ответы [ 3 ]

1 голос
/ 18 апреля 2019

Сначала отсортируйте в порядке убывания, затем получите первое:

const arr = [{
    name: "name1",
    id: 1
  },
  {
    name: "name2",
    id: 2
  },
  {
    name: "name1",
    id: 3
  },
  {
    name: "name1",
    id: 0
  }
];

const [greatest] = arr.sort(({ id: a }, { id: b }) => b - a);

console.log(greatest);
1 голос
/ 18 апреля 2019

Вы можете отсортировать этот массив и с помощью функции pop получить объект с наибольшим id.

arr.slice() // This is to avoid a mutation on the original array.

let arr = [   {     name: "name1",     id: 1   },   {     name: "name2",     id: 2   },   {     name: "name1",     id: 3   } ,  {     name: "name1",     id: 0   } ],
    greatest = arr.slice().sort(({id: a}, {id: b}) => a - b).pop();

console.log(greatest);
.as-console-wrapper { min-height: 100%; }
1 голос
/ 18 апреля 2019

let documents = [
  {
    name: "name1",
    id: 1
  },
  {
    name: "name2",
    id: 2
  },
  {
    name: "name1",
    id: 3
  },
  {
    name: "name1",
    id: 0
  }
];

let max = documents.sort( (a, b) => a.id > b.id ? -1 : 1)[0]
console.log( max );

Как насчет let maxIdDocument = documents.sort( (a, b) => a.id > b.id ? 1 : -1)[0]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...