我想从数组中找到最高的'转化'值:
var barTextData = [
{
term: "Roof",
clicks: 11235,
conversion: 3.12
}, {
term: "Snow",
clicks: 6309,
conversion: 4.45
}, {
term: "Chains",
clicks: 4479,
conversion: 4.33
}
]
我还想返回相应的'term'字符串?
答案 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是例外。