var arr = [{req: [{type: 'high', val: 1},{type: 'low', val: 2}], other: [{random: 123}]}, {req: [{type: 'cool', val: 1},{type: 'med', val: 3}], other: [{random: 456}]}]
如何使用数组函数编写函数以从val
为type
的对象数组内部的对象数组的上方获取med
的值
预期结果
var result = 3;
我尝试使用array的reduce函数
let getRequirementArray = (req, vol) =>
req.reduce((currentVal, obj) => {
return obj.type === vol ? obj.val + currentVal : currentVal;
}, 0);
let getFinalOutput = (arr, vol) =>
arr.reduce((currentVal, obj) => {
let { req } = obj;
let val= getRequirementArray(req, vol);
return val + currentVal;
}, 0);
var result = getFinalOutput(arr, 'med');
但是我期望功能会更小
答案 0 :(得分:0)
您可以将数组聚合为单个对象数组,然后找到type
等于med
的对象
var arr = [{req: [{type: 'high', val: 1},{type: 'low', val: 2}], other: [{random: 123}]}, {req: [{type: 'cool', val: 1},{type: 'med', val: 3}], other: [{random: 456}]}]
var mix = [].concat(...arr.map(t => t.req));
var obj = mix.find(x => x.type === 'med');
console.log(obj.val);
答案 1 :(得分:0)
您可以使用Arrays的每个函数,并在获得第一个值时返回false
data.append('description', 'my long description...');