Javascript 将输入中的数据值保存到多维数组中

Javascript 将输入中的数据值保存到多维数组中,javascript,multidimensional-array,Javascript,Multidimensional Array,通过这种方式,我希望将数据保存在一个数组中,读取如下输入值: var dataArray = []; dataArray.push({ items: [] }); var items = $('#services_hidden').val(); var itemsArray = items.split(","); console.log("itemsArray: " + itemsArray); $.each( itemsArray, function( index, value ){

通过这种方式,我希望将数据保存在一个数组中,读取如下输入值:

var dataArray = [];
dataArray.push({ items: [] });
var items = $('#services_hidden').val();
var itemsArray = items.split(",");
console.log("itemsArray: " + itemsArray);
$.each( itemsArray, function( index, value ){
    dataArray[0].items.push(value);
});
console.log("dataArray " + JSON.stringify(dataArray));
但我想要这个,我希望我能正确地表明这一点:

dataArray [{"items":["item1","value1","item2,"value2"]}]
因此父项是items,services_hidden.val中的每两个值用逗号分隔,应该创建一个key:value对


要实现这一点,我需要在代码中做哪些更改?

在分割数组上循环,除了按2递增。这样,每次迭代,itemsArray[i]是键,itemsArray[i+1]是值

dataArray [{"items":{"item1:value1"},{"item2:value2"}}]

在分割数组上循环,除了按2递增。这样,每次迭代,itemsArray[i]是键,itemsArray[i+1]是值

dataArray [{"items":{"item1:value1"},{"item2:value2"}}]
你可以用它来做这件事

//按id选择元素并获取值 var val=document.getElementById'services_hidden'。值; //在处拆分值,并创建数组 var ar=val.split','; //使用reduce返回数据数组变量中的结果 var data_array=ar.reduceFunction,e,i{ //若元素的索引是奇数,那个么将具有上一个索引号的数组元素和当前元素相加到结果中 如果i%2 r[0]。items=r[0]。items | |[]。concat{ [ar[i-1]]:e }; //返回结果数组。 返回r; }, [{}]; //将结果添加到HTML document.body.innerHTML+=; 你可以用它来做这件事

//按id选择元素并获取值 var val=document.getElementById'services_hidden'。值; //在处拆分值,并创建数组 var ar=val.split','; //使用reduce返回数据数组变量中的结果 var data_array=ar.reduceFunction,e,i{ //若元素的索引是奇数,那个么将具有上一个索引号的数组元素和当前元素相加到结果中 如果i%2 r[0]。items=r[0]。items | |[]。concat{ [ar[i-1]]:e }; //返回结果数组。 返回r; }, [{}]; //将结果添加到HTML document.body.innerHTML+=; 我建议使用,因为它访问每个元素并对其进行处理

var val=document.getElementById'services_hidden'。值, 数据_数组=[{items:[]}]; 数据_数组[0]。项; val.split','ForeachFunction,i{ var o={}; 如果我&1{ o[this.key]=a; 数据数组[0]。items.pusho 回来 } this.key=a; },{key:null}; document.body.innerHTML+=; 我建议使用,因为它访问每个元素并对其进行处理

var val=document.getElementById'services_hidden'。值, 数据_数组=[{items:[]}]; 数据_数组[0]。项; val.split','ForeachFunction,i{ var o={}; 如果我&1{ o[this.key]=a; 数据数组[0]。items.pusho 回来 } this.key=a; },{key:null}; document.body.innerHTML+=;
让我们坚持您的原始格式,尽可能简单:

var dataArray=[]; dataArray.push{items:[]}; var items=item1,value1,item2,value2,item3,value3;//$'服务隐藏。val var itemsArray=items.split,; 对于var i=0;iconsole.logdataArray+JSON.stringifydataArray 让我们坚持您的原始格式,尽可能简单:

var dataArray=[]; dataArray.push{items:[]}; var items=item1,value1,item2,value2,item3,value3;//$'服务隐藏。val var itemsArray=items.split,; 对于var i=0;iconsole.logdataArray+JSON.stringifydataArray;到目前为止你对这个问题的态度是什么?到目前为止你对这个问题的态度是什么?谢谢你的回答。你能为JS noob一步一步地解释一下吗?@Vaia:不是解释,而是reduce的文档:@Vaia我添加了一些解释和注释,但要完全理解reduce,你应该在这里学习,我认为你的解决方案是这些答案中最好、最聪明的。但是什么是[{}];确切地说是指在返回后的末尾?即在本例中作为结果或r参数传递的包含对象的数组,每次迭代都将其添加到r[0]。其中r为[],[0]是该数组中的第一项或{}将属性项添加到具有数组值的对象,并将对象添加到该数组。谢谢您的回答。你能为JS noob一步一步地解释一下吗?@Vaia:不是解释,而是reduce的文档:@Vaia我添加了一些解释和注释,但要完全理解reduce,你应该在这里学习,我认为你的解决方案是这些答案中最好、最聪明的。但是什么是[{}];确切地说是在返回后的末尾?这是一个数组,其中包含作为结果或r参数传递的对象,在本例中,每次迭代都会将其添加到r[0]。其中r为[],[0]是该数组或{}中的第一个项,然后将属性项添加到具有数组值的对象中,并将对象添加到该数组中。
for (let i = 0; i < itemsArray.length; i += 2) {
    let key = itemsArray[i];
    let value = itemsArray[i + 1];
    dataArray[0].items.push(key + ':' + value);
}