使用fs.readfile()我读取一个文件并将该文件的数据放在一个对象中。但是我怎样才能获得具有最高价值的行?
[ { id: 'AA', naam: 'de eerste', waarde: 100 },
{ id: 'BB', naam: 'de tweede', waarde: 120 },
{ id: 'CC', naam: 'de derde', waarde: 130 },
{ id: 'DD', naam: 'de laatste', waarde: 90 },
{ id: 'CC', naam: 'de derde', waarde: 150 },
{ id: 'CC', naam: 'de derde', waarde: 120 } ]
我指的是值为150的对象行。
答案 0 :(得分:5)
使用Array#reduce
方法通过自定义函数缩减为单个对象。
var data = [ { id: 'AA', naam: 'de eerste', waarde: 100 }, { id: 'BB', naam: 'de tweede', waarde: 120 }, { id: 'CC', naam: 'de derde', waarde: 130 }, { id: 'DD', naam: 'de laatste', waarde: 90 }, { id: 'CC', naam: 'de derde', waarde: 150 }, { id: 'CC', naam: 'de derde', waarde: 120 } ]
console.log(
data.reduce(function(prev, next) {
// compare object properties and return object with highest value
return prev.waarde >= next.waarde ? prev : next;
})
)

答案 1 :(得分:1)
@ Pranav C Balan答案的替代方法可以使用for
循环。
var data = [ { id: 'AA', naam: 'de eerste', waarde: 100 }, { id: 'BB', naam: 'de tweede', waarde: 120 }, { id: 'CC', naam: 'de derde', waarde: 130 }, { id: 'DD', naam: 'de laatste', waarde: 90 }, { id: 'CC', naam: 'de derde', waarde: 150 }, { id: 'CC', naam: 'de derde', waarde: 120 } ]
var result = data[0];
for(var i = 1; i< data.length; i++){
if(result.waarde < data[i].waarde)
result = data[i];
}
console.log(result)
另请注意,对象是按引用传递的,因此如果在循环之后执行result.waarde = 0
,则会覆盖data
中的对象。
result = data[i];
只会在结果中复制reference
data[i]
,而不是整个对象。