我试图返回具有以下格式的数组:[lowestKey,highestKey]。这样做最简单的方法是什么?我进行了一个for循环(尚未完成),而下一步该怎么办?
为清楚起见:该函数应该接受一个对象并返回一个最低和最高键的数组。
这是我到目前为止所拥有的:
function minMaxKeyInObject(arr) {
let min = arr[0].y, max = arr[0].y;
for (let i = 1, len=arr.length; i < len; i++) {
let v = arr[i].y;
min = (v < min) ? v : min;
max = (v > max) ? v : max;
}
return [min, max];
}
console.log(
minMaxKeyInObject({ 2: 'a', 7: 'b', 1: 'c', 10: 'd', 4: 'e' }),
minMaxKeyInObject({ 1: 'Elie', 4: 'Matt', 2: 'Tim' })
);
我正在尝试返回[1, 10]
和[1, 4]
答案 0 :(得分:4)
Object.keys()
获取密钥,然后只需返回带有Math.min()
/ Math.max()
function minMaxKeyInObject(obj) {
let keys = Object.keys(obj);
return [Math.min(...keys), Math.max(...keys)];
}
console.log(
minMaxKeyInObject({2: 'a',7: 'b',1: 'c',10: 'd',4: 'e'}),
minMaxKeyInObject({1: 'Elie',4: 'Matt',2: 'Tim'})
);
答案 1 :(得分:1)
您不能在JS对象上使用长度。您需要遍历密钥并找到最大值和最小值
function minMaxKeyInObject(arr) {
let min, max;
let first = true;
for (var keyval in arr) {
if (first) {
min = keyval;
max = keyval;
first = false;
} else {
let v = keyval;
min = (v < min) ? v : min;
max = (v > max) ? v : max;
}
}
return [min, max];
}