获取 JavaScript 数组中每个键的最大值
假设我们有一个包含对象数组,如下所示 -
const arr = [ {a:1, b:"apples"}, {a:3, b:"apples"}, {a:4, b:"apples"}, {a:1, b:"bananas"}, {a:3, b:"bananas"}, {a:5, b:"bananas"}, {a:6, b:"bananas"}, {a:3, b:"oranges"}, {a:5, b:"oranges"}, {a:6, b:"oranges"}, {a:10, b:"oranges"} ];
我们需要编写一个 JavaScript 函数,该函数接受一个这样的数组,并返回一个对象数组。
该数组应包含一个对象,其中“b”属性的每个唯一值都是“a”属性具有最高值的。
代码如下 -
const arr = [ {a:1, b:"apples"}, {a:3, b:"apples"}, {a:4, b:"apples"}, {a:1, b:"bananas"}, {a:3, b:"bananas"}, {a:5, b:"bananas"}, {a:6, b:"bananas"}, {a:3, b:"oranges"}, {a:5, b:"oranges"}, {a:6, b:"oranges"}, {a:10, b:"oranges"} ]; const pickHighest = arr => { const res = [], map = {}; arr.forEach(el => { if (!(el['b'] in map)) { map[el['b']] = res.push(el) - 1; return; }; if(res[map[el['b']]]['a'] < el['a']){ res[map[el['b']]] = el; }; }); return res; }; console.log(pickHighest(arr));
以下是控制台上的输出 -
[ { a: 4, b: 'apples' }, { a: 6, b: 'bananas' }, { a: 10, b: 'oranges' } ]
广告