如何在数组中获取包含最大值的两个对象

时间:2015-02-04 02:25:32

标签: javascript jquery arrays arraylist func

在jquery中:

var arr = [{name:"a",val:3},{name:"b",val:6},{name:"c",val:7},{name:"d",val:8}];

如何输出

[{name:"c",val:7},{name:"d",val:8}]

注意:当然对象的位置不是恒定的。

2 个答案:

答案 0 :(得分:1)

实际上,你不需要这个jQuery。

arr.sort(function(a,b){ return a.val < b.val});

//arr[0] now contains object with the maximum
//arr[1] now contains object with the second greatest value

如果您对数组,对象等更详细的javascript实用程序感兴趣,请查看lodash或underscore.js:

https://lodash.com/ http://underscorejs.org/

答案 1 :(得分:0)

不知道为什么你想要这些特定的项目,而不知道任何其他的上下文,只被要求创建一些输出(你想要数组中的项目,或者你想将它作为文本输出?)这里是一个抛弃一段代码,这些代码可能会帮助你找出你真正想做的事情。

&#13;
&#13;
var arr = [{name:"a",val:3},{name:"b",val:6},{name:"c",val:7},{name:"d",val:8}];
var tarr = [];
function fetch() {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].name == "c" || arr[i].name == "d") {
            tarr[tarr.length] = arr[i];
        }            
    }
    var output = document.getElementById("results");
    output.innerHTML += "[";
    for (var j = 0; j < tarr.length; j++) {
        output.innerHTML += "{name:\"" + tarr[j].name + "\",val:" + tarr[j].val + "}";
        if (j < tarr.length - 1) {
          output.innerHTML += ",";
        }
    }
    output.innerHTML += "]";
}
fetch();
&#13;
<div id="results"></div>
&#13;
&#13;
&#13;