返回给定键中数组中的最小元素

时间:2019-02-17 11:46:02

标签: javascript

我想返回给定对象和键中的最小元素,但是如果给定数组为空或给定键处的属性不是数组,则它应该返回undefined。 我解决了,但是我对自己的方法并不完全满意。 有什么建议可以使我的代码更短吗?。

let obj = {
  key: [8, 5, 10, 15, 11, 21, 1, 25]
};

const smallest = (obj, key) => {
  return !Array.isArray(obj[key]) || obj[key].length <= 0 ? undefined : obj[key].reduce((l, s) => l < s ? l : s)
}
smallest(obj, 'key');

2 个答案:

答案 0 :(得分:3)

您可以检查并返回最小值。

const smallest = (obj, key) => Array.isArray(obj[key]) && obj[key].length
    ? Math.min(...obj[key])
    : undefined;

console.log(smallest({ key: [8, 5, 10, 15, 11, 21, 1, 25] }, 'key'));
console.log(smallest({ key: [8] }, 'key'));
console.log(smallest({ key: [] }, 'key'));
console.log(smallest({}, 'key'));

答案 1 :(得分:0)

您可以在阵列上将Math.min()spread operator(...)结合使用,而不是reduce

let obj = {
  key: [8, 5, 10, 15, 11, 21, 1, 25]
};

const smallest = (obj, key) => {
  return !Array.isArray(obj[key]) || obj[key].length <= 0 ? undefined :  Math.min(...obj[key]);
}
console.log(smallest(obj, 'key'));