循环对象,并在JavaScript中返回最小数(loop over an object and re

2019-09-28 04:01发布

所以,我是一个新手JS和我试图找出如何解决我的问题。 我试图循环对象和返回的最低数量。

在我的var shortest = ; 如果我硬编码了一些说var shortest = 455; 那么问题将返回正确的号码3,虽然林不知道要放什么东西存在,使其默认为空白。 我曾尝试object[0] object[key]'' ,没有这些工作正常

var myObj = {first: 45, second: 23, third: 3, fourth: 222, fifth: 2343};

var myFunc = function (object) {
    var shortest = ;
    for (var key in object) {
      if (object[key] < shortest) {
        shortest = object[key];
      }
    }; 
    return shortest;
};

Answer 1:

以最短的Number.MAX_VALUE设置的初始值是所有你需要

var myObj = {first: 45, second: 23, third: 3, fourth: 222, fifth: 2343};

var myFunc = function (object) {
    var shortest = Number.MAX_VALUE;
    for (var key in object) {
      if (object[key] < shortest) {
        shortest = object[key];
      }
    }; 
    return shortest;
};

Number.MAX_VALUE最大正表示数。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number



Answer 2:

尝试这个:

var myObj = {first: 45, second: 23, third: 3, fourth: 222, fifth: 2343};

    var myFunc = function (object) {
        var shortest = object.first;
        for (var key in object) {
          if (object[key] < shortest) {
            shortest = object[key];
          }
        }; 
        return shortest;
    };


Answer 3:

失败的原因是在这里:

var myFunc = function (object) {
    var shortest = ;
    for (var key in object) {
      if (object[key] < shortest) {

由于最短的值是未定义的,该<操作导致它被转换为NaN用于测试,并根据用于规则摘要关系比较算法 ,comaring什么NaN返回未定义,其等同于false这里。

解决方法是初始化最短为某个值,例如作为秋德清建议Number.MAX_VALUE,或者您也可以使用这样的:

function getShortest(object) {
    var shortest, value;

    for (var key in object) {
      value = object[key];

      if (typeof value == 'number' && !isNaN(value)) {

        if (typeof shortest != 'number') {
          shortest = value;
        } else {
          if (value < shortest) {
            shortest = value;
          }
        }
      }
    }
    return shortest;
}

以上将确保你只能比较数字和最短的仅是一个数字或不确定 。 应该有可能会是一个hasOwnProperty测试过,以避免继承属性。



Answer 4:

看看这有助于:

var lowest = function(ns) {
  return Math.min.apply(0, ns);
};

var values = function(obj) {
  var result = [];
  for (var i in obj) {
    result.push(obj[i]);
  }
  return result;
};

var result = lowest(values(myObj));

console.log(result); //=> 3


文章来源: loop over an object and return lowest number in javascript