【问题标题】:Javascript Standard Object - How To Return Two Elements?Javascript 标准对象 - 如何返回两个元素?
【发布时间】:2016-07-11 05:30:48
【问题描述】:

如果我有标准对象

 var data = [];

 data["Name"] = ["Janet", "James", "Jean", "Joe", "John"];
 data["Number"] = [25, 22, 37, 19, 40];

假设我想要最小数值'19'

如何返回并显示与最小数值关联的名称?与最大值关联的名称呢?

基本上,如何一次返回两个元素以及如何确定它们是否相互关联?

我尝试过 indexOf() 但方法在标准对象上无法正常工作。 我对 Javascript 还很陌生。

已编辑:忘记数组中的方括号...

【问题讨论】:

  • 代码中有很多错误
  • 我认为您的数据周围缺少一些[...]
  • var data = {}; data["Name"] = ["Janet", "James", "Jean", "Joe", "John"]; data["Number"] = [25, 22, 37, 19, 40];
  • 糟糕,刚刚添加了方括号。对不起,我完全忘记了

标签: javascript arrays object associative-array


【解决方案1】:

使用Math.min.applyarrayArray#indexOf 中获取smallest 值以获取smallest 编号的索引

var data = {}; //Initialize it as object

data["Name"] = ["Janet", "James", "Jean", "Joe", "John"];
data["Number"] = [25, 22, 37, 19, 40];

var min = Math.min.apply(null, data["Number"]);
console.log(min);
console.log(data["Name"][data["Number"].indexOf(min)]);
//-----------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^To get the index of smallest number

【讨论】:

  • @SpencerWieczorek – Associative array 但更少 readable令人困惑的
  • 它与 [] 一起工作,因为数组是一个对象,就像 JS 中的任何其他对象一样,它可以动态地添加属性。没什么奇怪的,它适用于 JS 中的任何引用对象。
  • 我在 data.Number.indexOf 上遇到 Uncaught Type 错误(它说它不是函数)...还有其他人吗?
  • @5120bee - 你有没有点击Run code sn-p来测试?
【解决方案2】:

使用 ES6 Array.prototype.find() 函数的替代方案:

// search for MAX number
var idx = data["Number"].indexOf(Math.max.apply(null, data["Number"])),
    nameWithMax = data["Name"].find((v, i) => i === idx);
console.log(nameWithMax);  // "John"

【讨论】:

    猜你喜欢
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    相关资源
    最近更新 更多