как вернуть идентификатор, чье значение c макс.Он должен вернуть id 1, потому что его значение c равно max
c
var array = [{"id":1,"c":5,"f":8},{"id":2,"c":3,"f":9},{"id":3,"c":4,"f":3}];
Вы можете использовать array.sort((a,b) => b.c > a.c)[0].id; (расширение существующего ответа для удовлетворения требований ОП)
array.sort((a,b) => b.c > a.c)[0].id;
var array = [{"id":1,"c":5,"f":8},{"id":2,"c":3,"f":9},{"id":3,"c":4,"f":3}], maxCId = array.sort((a,b) => b.c > a.c)[0].id; console.log( maxCId );
Посмотрите на Лодаш
var array = [{"id":1,"c":5,"f":8},{"id":2,"c":3,"f":9},{"id":3,"c":4,"f":3}]; console.log(_.maxBy(array, 'c'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
В таких случаях методы JavaScript Array (map, filter, Reduce) действительно полезны.
var array = [{"id":1,"c":5,"f":8},{"id":2,"c":3,"f":9},{"id":3,"c":4,"f":3}]; let max = Math.max.apply(null, array.map(el => el.c)); let ID = array.filter(el => el.c === 5)[0].id; console.log(ID);
Вы можете уменьшить объекты, проверив свойство объекта в одном цикле.
var array = [{ id: 1, c: 5, f: 8 }, { id: 2, c: 3, f: 9 }, { id: 3, c: 4, f: 3 }], maxC = array.reduce((a, b) => a.c > b.c ? a : b); console.log(maxC); console.log(maxC.id);
Чтобы получить больше объектов с одинаковым максимальным значением, вы можете использовать массив в качестве результирующего набора.
var array = [{ id: 1, c: 5, f: 8 }, { id: 2, c: 3, f: 9 }, { id: 3, c: 4, f: 3 }, { id: 4, c: 5, f: 3 }], maxC = array.reduce((r, o) => { if (!r || o.c > r[0].c) { return [o]; } if (o.c === r[0].c) { r.push(o); } return r; }, undefined); console.log(maxC);
Если вам не нужны лямбда-функции, это должно быть довольно наглядно
function getMaxId ( array ) { var max_index = 0; var max = 0; for ( var i = 0; i < array.length; i++ ) { if( array[ i ].c > max ) { max = array[ i ].c; max_index = i; } } return array[ max_index ].id }
Сначала найдите максимальное значение.
var maxC = Math.max.apply(null, array.map( s => s.c ));
Теперь find пункт с maxC
find
maxC
var idWithMaxC = array.find( s => s.c === maxC ).id
Демо
var array = [{ "id": 1, "c": 5, "f": 8 }, { "id": 2, "c": 3, "f": 9 }, { "id": 3, "c": 4, "f": 3 }]; var maxC = Math.max.apply(null, array.map(s => s.c)); var idWithMaxC = array.find(s => s.c === maxC).id console.log(idWithMaxC);
Вы можете попробовать следующее
var array = [{"id":1,"c":5,"f":8},{"id":2,"c":3,"f":9},{"id":3,"c":3,"f":3}]; var obj = {}; array.forEach((item) => { obj = !obj.id ? item : (obj.c > item.c ? obj : item); }); console.log(obj); // gives object console.log(obj.id); // gives id
Сортировка по значению c и выбор первого индекса.
var array = [{"id":1,"c":5,"f":8},{"id":2,"c":3,"f":9},{"id":3,"c":4,"f":3}], max = array.sort((a,b) => b.c > a.c)[0]; console.log( max );