コードの目的は、数値コンポーネントが10以上のすべてのラベルを、ラベルがV10+
の単一のオブジェクトに結合する新しい配列を生成することです。新しいオブジェクトの値は、最大のラベルの値になります。次の例ではJavaScriptで複数の配列トラバーサルを避ける
、V13
が最大のラベルので、その値が使用されますされた:
[{'V10', 11}, {'V11', 123}, {'V12', 112}, {'V13', 120}] => {'V10+', 120}
を現在、私は、アレイ上find
、map
その後、reduce
を使用する必要があります。誰かがこれを簡略化するための提案を持っていますか?
var someObjects = [
{'label': 'VS', 'value': 1 },
{'label': 'V1', 'value': 2 },
{'label': 'V2', 'value': 3 },
{'label': 'V3', 'value': 4 },
{'label': 'V4', 'value': 5 },
{'label': 'V5', 'value': 6 },
{'label': 'V6', 'value': 7 },
{'label': 'V7', 'value': 8 },
{'label': 'V8', 'value': 9 },
{'label': 'V9', 'value': 10 },
{'label': 'V10', 'value': 11 },
{'label': 'V11', 'value': 123 },
{'label': 'V12', 'value': 112 },
{'label': 'V13', 'value': 120 },
{'label': 'VE', 'value': 13 }
];
var maxObjVal = someObjects.find(function(obj) {
var max = Math.max.apply(null, someObjects.map(function (s) {
var labelNumber = s.label.substring(1);
return +labelNumber || 0;
}));
return obj.label == 'V' + max;
}).value;
var result = someObjects.reduce(function (ten) {
return function (r, a) {
var n = +a.label.substring(1);
if (n >= 10) {
if (!ten) {
ten = { label: 'V10+', value: maxObjVal };
r.push(ten);
}
} else {
r.push(a);
}
return r;
};
}(), []);
console.log('result: ' + JSON.stringify(result));
ここにあなたのコードを投稿してください – brk
あなたにも、コードの目的を説明してみてください可能性があります。 –