返回具有以下格式的数组:[lowestKey,highestKey]

时间:2019-12-30 19:53:46

标签: javascript

我试图返回具有以下格式的数组:[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]

2 个答案:

答案 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];
}