Reputation: 167
Good morning everyone, is there a method in Javascript to convert from
{
Control[0].Eseguito: "true"
Control[0].Id:"2"
Control[0].Nota:""
Control[1].Eseguito: "true"
Control[1].Id:"2"
Control[1].Nota:""
}
to javascript Array?
Control: Array(2)
0: {Id: '1', Eseguito: "true", Nota: ''}
1: {Id: '1', Eseguito: "true", Nota: ''}
EDIT
let myForm = document.getElementById('ControlForm');
var Controls = Object.fromEntries(new FormData(myForm).entries());
In mine ExecControl.cshtml i have situation like this, this is only a small snippet of codes
@{
int Indice = 0;
}
@for (int i = 0; i < Model.ListControls.Length; i++)
{
for (int j = 0; j < Model.ListControls[i].Controls.Length; j++)
{
...
<input type="text" style="width:100%;" name="Control[@Indice].Nota"/>
input type="text" style="width:100%;" name="Control[@Indice].Id" value="@ListControls[i].Controls.Id"/>
...
}
}
Upvotes: 0
Views: 390
Reputation: 3045
you can convert only [index] type data to array with this method.
var formData = new FormData();
formData.append("Control[0].Id",1);formData.append("Control[0].Nota","Notaval");formData.append("Control[1].Id",2);formData.append("Control[1].Nota","Nott");
function toArray(data){
var result = [];
for (const [key,value] of data.entries()) {
if(!key.includes("[") || !key.includes("]")) {return;}
var indexVal = key.indexOf("[") + 1;
var indexVal2 = key.indexOf("]");
var index = parseInt(key.substring(indexVal,indexVal2))
if(index == NaN){ return;}
var field = key.split(".")[1]
result[index] = {...result[index],[field]:value}
}
return result;
}
console.log(toArray(formData));
Upvotes: 1