I’m using app script to get data from API and return array JSON:
var jsn = [
{ numbers: '228', id: '4152', gendar: 'female' type: 'femalemale', num: '20'},
{ numbers: '356', id: '4152', gendar: 'female' type: 'femalemale', num: '10'},
{ numbers: '978', id: '8479', gendar: 'male' type: 'malefemale', num: '15'},
{ numbers: '101', id: '8479', gendar: 'male' type: 'malefemale', num: '12'},
];
var obj = {};
for (let o of jsn) {
try {
try {
obj[o.id].numbers.push(o.numbers)
obj[o.id].num.push(o.num)
} catch (e) {
obj[o.id].numbers = [o.numbers]
obj[o.id].num= [o.num]
}
} catch (e) {
o.numbers = [o.numbers];
o.numbers = [o.num];
obj[o.id] = o;
}
}
var arr = Object.values(obj);
console.log(arr);
this code get result:
[{ numbers: 292, id: '4152', gendar: 'female', num: 30 },
{ numbers: 539.5, id: '8479', gendar: 'male', num: 27 }]
I want IF ‘gendar’ has word exit in first word in ‘type’ then calculate ‘numbers’.
exemple IF ‘female’ in gendar, exit in first word in word ‘femalemale’ in type calculate numbers as math: numbers – num. mean 292 – 30 = 262.
the result maybe like :
[{ numbers: 262, id: '4152', gendar: 'female', num: 30},
{ numbers: 539.5, id: '8479', gendar: 'male', num: 27 }]
And IF ‘female’ in gendar, exit in last word in word ‘malefemale’ in type calculate numbers as math: numbers + num . mean 539.5 + 27 = 566.5.
the result maybe like :
[{ numbers: 292, id: '4152', gendar: 'female', num: 30},
{ numbers: 566.5, id: '8479', gendar: 'male', num: 27 }]
I try this code : for (let id in obj) if (obj[id].gendar (string.match(/^type/g))) obj[id].numbers - obj[id].num;
if this method true is change array to string but I don’t want array change to string . I want keep it as object.
this code give me error: TypeError: obj[id].gendar is not a function.
note: use it but without change the type of array to string. keep it as object.