我在JavaScript中有一个对象,它长得像这样:
{ "a":4, "b":0.5 , "c":0.35, "d":5 }
有没有一种快速的方法可以在不必遍历所有属性的情况下获取属性中的最小值和最大值?因为我拥有的对象非常大,并且我需要每两秒获取一次最小/最大值。(对象的值保持变化)。
我在JavaScript中有一个对象,它长得像这样:
{ "a":4, "b":0.5 , "c":0.35, "d":5 }
有没有一种快速的方法可以在不必遍历所有属性的情况下获取属性中的最小值和最大值?因为我拥有的对象非常大,并且我需要每两秒获取一次最小/最大值。(对象的值保持变化)。
_()
吗?对我来说,在 lodash 中,_
是不可调用的。 - Greg Wozniak对于不同深度的嵌套结构,例如{node: {leaf: 4}, leaf: 1}
,可以使用lodash或underscore实现如下:
function getMaxValue(d){
if(typeof d === "number") {
return d;
} else if(typeof d === "object") {
return _.max(_.map(_.keys(d), function(key) {
return getMaxValue(d[key]);
}));
} else {
return false;
}
}
var newObj = { a: 4, b: 0.5 , c: 0.35, d: 5 };
var maxValue = Math.max(...Object.values(newObj))
var minValue = Math.min(...Object.values(newObj))
obj.prototype.getMaxinObjArr = function (arr,propName) {
var _arr = arr.map(obj => obj[propName]);
return Math.max(..._arr);
}
const Obj = {
"TRADE::Trade1": {
"dateTime": "2022-11-27T20:17:05.980Z",
},
"TRADE::Trade2": {
"dateTime": "2022-11-27T20:36:10.659Z",
},
"TRADE::Trade3": {
"dateTime": "2022-11-27T20:28:10.659Z",
}
}
const result = Object.entries(Obj).sort((prev, next) => new Date(prev[1].dateTime) - new Date(next[1].dateTime))
console.log(result)
var object = { a: 4, b: 0.5 , c: 0.35, d: 5 };
// Take all value from the object into list
var valueList = $.map(object,function(v){
return v;
});
var max = valueList.reduce(function(a, b) { return Math.max(a, b); });
var min = valueList.reduce(function(a, b) { return Math.min(a, b); });