Tengo un json como este:
[ { "objectid":"61b1", "name":["abc","xyz"], "date":["2021-08-20","2021-09-20"] } ]Quiero manipular el json para crear uno simple como se muestra a continuación:
[ { "objectid":"61b1", "name":"abc", "date":"2021-08-20" }, { "objectid":"61b1", "name":"xyz", "date":"2021-09-20" } ]Por favor, ayuda si alguien ha hecho esto antes. Gracias por adelantado.
Puede usar reduce para dividir la fecha y el nombre de cada elemento y empujar el valor de división al resultado acumulado de la siguiente manera:
var input = [ { "objectid":"61b1", "name":["abc","xyz"], "date":["2021-08-20","2021-09-20"] } ]; var output = input.reduce(function(acc, curr){ //foreach element we try to slipt it // if we have more than one element in date or name if(curr.name.length > 0 && curr.date.length > 0){ //we make sur that we the same length of date et name var length = Math.min(curr.name.length, curr.date.length); for(var i = 0; i < length; i ++){ var name = curr.name[i]; var date = curr.date[i]; acc.push({ "objectid": curr.objectid, "name": name, "date": date }); } }else{ acc.push(curr); } return acc; },[]) output;