私はこのようなオブジェクトの配列があります。私が欲しい迅速な方法は、
arr = [
{name: "Alex", value: 1},
{name: "Bill", value: 2},
{name: "Jim", value: 3},
{name: "Dim", value: 5}
]
分を持っているために迅速かつクリーンな方法の最大値valueプロパティは
min = 1,
max = 5
私はこのようなオブジェクトの配列があります。私が欲しい迅速な方法は、
arr = [
{name: "Alex", value: 1},
{name: "Bill", value: 2},
{name: "Jim", value: 3},
{name: "Dim", value: 5}
]
分を持っているために迅速かつクリーンな方法の最大値valueプロパティは
min = 1,
max = 5
最もパフォーマンスおそらく、
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)
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)
書くまでの最短だろう
arr.reduce(function(prev, curr) {
return prev.value < curr.value ? prev : curr;
});
最大は、同様の方法で
var min = Number.POSITIVE_INFINITY,
max = Number.NEGATIVE_INFINITY;
arr.forEach(function(obj) {
min = Math.min(min, obj.value);
max = Math.max(max, obj.value);
});
あなたはを使用することができますを使用して値の配列を返し、Math.max/min
にspread構文を使用します。
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)
あなた可能性のいずれか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);
最小/最大値を求めるのに必要な時間は、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}
を働くだろうあなたはあなたのためにそれを行うための関数を作成し、すべてのことができます:あなたは分間アレイ上reduce
機能を使用することができます
natiを使用して配列をソートすることができますve 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];
をあなたは便利かもしれない最小または最大値を、持っている完全なオブジェクトを返すことができます。 reduce()
使用
私は "叙事詩"とタイプしようとしていましたが、stackoverflowはコメントごとに最小量の文字を課すので、これは私のジッバーリッシュです – Webeng
:
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);
はitem.valueは順序で配置されていますか? – GibboK
いいえ、それは無作法です – user7334203