如何找到最高值并从数组中返回它

时间:2015-01-26 20:49:45

标签: javascript

我想从数组中找到最高的'转化'值:

var barTextData = [
{
    term: "Roof",
    clicks: 11235,
    conversion: 3.12
}, {
    term: "Snow",
    clicks: 6309,
    conversion: 4.45
}, {
    term: "Chains",
    clicks: 4479,
    conversion: 4.33
}
]

我还想返回相应的'term'字符串?

4 个答案:

答案 0 :(得分:2)

一个简单的循环可以解决这个问题:

var highest = 0, term = "";
for (var i = 0; i < barTextData.length; i++) {
    if (barTextData[i].conversion > highest) {
        highest = barTextData[i].conversion;
        term = barTextData[i].term;
    }
}

答案 1 :(得分:0)

您应该遍历数组,保存找到的最高值,并将其与每个项目的转换进行比较。如果转换高于保存的项目,请将其替换为当前项目。最后,您应该保存转化率最高的项目。

请注意,在conversion属性上进行比较非常重要,但请保存整个项目,以便稍后访问term属性。

var barTextData = [{
  term: "Roof",
  clicks: 11235,
  conversion: 3.12
}, {
  term: "Snow",
  clicks: 6309,
  conversion: 4.45
}, {
  term: "Chains",
  clicks: 4479,
  conversion: 4.33
}];

// Get the highest conversion
var highest = null;
barTextData.forEach(function(it) {
  if (!highest || it.conversion > highest.conversion) {
    highest = it;
  }
});

if (highest) {
  document.getElementById("result").textContent = JSON.stringify(highest);
} else {
  document.getElementById("result").textContent = "No value found.";
}
<pre id="result"></pre>

答案 2 :(得分:0)

您可以对数组进行排序并获取第一个元素

var highest = barTextData.sort(function(a, b) {
  return a.conversion < b.conversion;
})[0];
console.log(highest.term);

答案 3 :(得分:0)

使用Array's reduce可以解决问题:

var maximumBarTextObject = barTextData.reduce(function(currentMax, current) {
    if (!currentMax) {
        return currentMax;
    }
    return (current.conversion > currentMax.conversion) ? current : currentMax;
});

如果这是客户端代码,则all major browsers支持Array.prototype.reduce,IE7和8是例外。