如何从数组中获得多个键之间的最大值?
我已经尝试了以下方法只有三个(而不是多个)键.
getMaxValuefromkeys(values: any[], key1: string, key2: string, key3: string) {
var val1 = Math.max.apply(Math, values.map(function (a) { return a[key1] }));
var val2 = Math.max.apply(Math, values.map(function (a) { return a[key2]; }));
var val3 = Math.max.apply(Math, values.map(function (a) { return a[key2]; }));
if (val1 >= val2 || val1 >= val3) {
return val1;
} else if (val2 >= val3 || val2 >= val1) {
return val2;
}
return val3;
}
But we need to check more condition and write more codes if we use multiple keys. So I have tried these below codes
Math.max.apply(Math, values.map(function (a) { return a[key1], a[key2], a[key3]; }));
// where I want to return multiple keys
But it’s not working. Is any single line of code available for getting max value in between multiple keys from array?
解决方法:
Array#将每个对象映射到它的最大值,然后找到数组的最大值:
var values = [{ a: 4, b: 3 }, { a: 2, b: 8 }, { a: 1, b: 2 }];
var key1 = 'a', key2 = 'b';
var result = Math.max.apply(Math, values.map(function (a) { return Math.max(a[key1], a[key2]); }));
console.log(result);
如果您想要更灵活的东西,可以接受多个键:
var values = [{ a: 4, b: 3, c: 23 }, { a: 2, b: 28, c: 13 }, { a: 1, b: 2, c: 1 }];
function getMaxOfKeys(values, keys) {
return Math.max.apply(Math, values.map(function(obj) {
return Math.max.apply(Math, keys.map(function(key) {
return obj[key];
}));
}));
}
// or the ES6 equivalent
const getMaxOfKeysES6 = (values, keys) =>
Math.max(...values.map(
(obj) =>
Math.max(...keys.map((key) => obj[key]))
)
);
console.log(getMaxOfKeys(values, ['a', 'b', 'c']));
console.log(getMaxOfKeysES6(values, ['a', 'b', 'c']));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。