我有一个像这样的对象数组:
keyword
我希望快速而干净地将min值设置为value属性
arr = [
{name: "Alex", value: 1},
{name: "Bill", value: 2},
{name: "Jim", value: 3},
{name: "Dim", value: 5}
]
答案 0 :(得分:2)
您可以在数组上使用reduce
函数min:
arr.reduce(function(prev, curr) {
return prev.value < curr.value ? prev : curr;
});
max会以类似的方式工作
答案 1 :(得分:1)
name
&#13;
答案 2 :(得分:1)
您可以使用map()
返回值数组,然后使用带有扩展语法的Math.max/min
。
var arr = [{name:'Alex', value:1}, {name:'Bill', value:2},{name:'Jim', value: 3},{name: 'Dim', value:5}]
var values = arr.map(e => e.value);
var min = Math.min(...values);
var max = Math.max(...values);
console.log(max)
console.log(min)
答案 3 :(得分:1)
您可以map
值并使用Math
函数获取最高值和最低值。
var arr = [{name:'Alex', value:1}, {name:'Bill', value:2},{name:'Jim', value: 3},{name: 'Dim', value:5}],
hash = arr.map(v => v.value),
min = Math.min.apply(Math, hash),
max = Math.max.apply(Math, hash);
console.log(min, max);
或者只是根据value
属性对对象数组进行排序,然后选择第一个和最后一个。
var arr = [{name:'Alex', value:1}, {name:'Bill', value:2},{name:'Jim', value: 3},{name: 'Dim', value:5}],
hash = arr.sort((a,b) => a.value - b.value);
min = hash[0].value;
max = hash[hash.length-1].value;
console.log(min, max);
答案 4 :(得分:1)
大多数表演者可能是一个简单的循环
arr = [
{name: "Alex", value: 1},
{name: "Bill", value: 2},
{name: "Jim", value: 3},
{name: "Dim", value: 5}
]
let min,max;
for (var i=arr.length; i--;) {
if ((!min) || arr[i].value < min) min = arr[i].value;
if ((!max) || arr[i].value > max) max = arr[i].value;
}
console.log(min, max)
&#13;
写作最短,类似
arr = [
{name: "Alex", value: 1},
{name: "Bill", value: 2},
{name: "Jim", value: 3},
{name: "Dim", value: 5}
]
let m=Math,a=arr.map(z=>z.value);let [min,max]=[m.min(...a),m.max(...a)];
console.log(min,max)
&#13;
答案 5 :(得分:1)
您可以创建一个功能来为您完成,每次需要找到最小值/最大值时,只需要一行:
function findMM (arr) {
var minV;
var maxV;
var firstLoop = true;
arr.forEach(function(object){
if (firstLoop) {
minV = object.value;
maxV = object.value;
firstLoop = false;
} else {
if (object.value < minV){ minV = object.value }
if (object.value > maxV){ maxV = object.value }
}
});
return {min: minV, max: maxV};
}
//using the function
var results = findMM(arr);
console.log(JSON.stringify(results)); //output: {"min":1,"max":5}
答案 6 :(得分:1)
您可以使用原生Array.prototype.sort()
对数组进行排序,并获取第一个和最后一个值。
let data = [{
name: 'Ales',
value: 1
},
{
name: 'Dim',
value: 5
},
{
name: 'Bill',
value: 2
},
{
name: 'Jim',
value: 3
}
];
data = data.sort((a, b) => a.value - b.value);
let min = data [0].value;
let max = data [data .length - 1].value;
console.log('min:', min);
console.log('max:', max)
注意:
如果您改为使用:
let min = data [0];
let max = data [data .length - 1];
你可以返回具有最小值或最大值的完整对象,这可能很方便。
答案 7 :(得分:1)
使用reduce()
:
var arr = [{name:'Alex', value:1}, {name:'Bill', value:2},{name:'Jim', value: 3},{name: 'Dim', value:5}]
var result = arr.reduce(function(acc, val){
return { min: Math.min(acc.min, val.value),
max: Math.max(acc.max, val.value)}
}, {min: arr[0].value, max: arr[0].value});
console.log(result.max);
console.log(result.min);