JavaScript创建多级对象

JavaScript创建多级对象,javascript,object,Javascript,Object,我想创建一个如下所示的对象: var exampleObject = { '1' : ['2','3','7'], '2' : ['4','7'], '4' : ['5','1','2'] }; 从输入字段列表中: <input type="checkbox" class="flat-red" name="1" value="2"> <input type="checkbox" class="flat-red" name="1" value="3"

我想创建一个如下所示的对象:

var exampleObject = {
    '1' : ['2','3','7'],
    '2' : ['4','7'],
    '4' : ['5','1','2']
  };
从输入字段列表中:

<input type="checkbox" class="flat-red" name="1" value="2">
<input type="checkbox" class="flat-red" name="1" value="3">
<input type="checkbox" class="flat-red" name="1" value="7">
<input type="checkbox" class="flat-red" name="2" value="4">
<input type="checkbox" class="flat-red" name="2" value="7">
<input type="checkbox" class="flat-red" name="4" value="5">
<input type="checkbox" class="flat-red" name="4" value="1">
<input type="checkbox" class="flat-red" name="4" value="2">

其思想是,对于具有相同“name”属性的每个输入,我希望输入中的“value”字段中的值。我尝试过不同的方法,但没有成功。有没有关于如何实现这一目标的建议?

  • 用于选择所有
    '.平红色'
    元素
  • 用于迭代元素
var elems=document.queryselectoral('.flat red');
var obj={};
[]forEach.call(元素,函数(元素){
如果(!obj[el.name]){
对象[el.name]=[el.value];
}否则{
对象[el.name].push(el.value);
}
});
控制台日志(obj)

  • 用于选择所有
    '.平红色'
    元素
  • 用于迭代元素
var elems=document.queryselectoral('.flat red');
var obj={};
[]forEach.call(元素,函数(元素){
如果(!obj[el.name]){
对象[el.name]=[el.value];
}否则{
对象[el.name].push(el.value);
}
});
控制台日志(obj)

您可以使用
for()
循环和一个对象来执行此操作

var result={}
var inputs=document.queryselectoral('.flat red');
对于(变量i=0;i

您可以使用
for()
循环和一个对象来执行此操作

var result={}
var inputs=document.queryselectoral('.flat red');
对于(变量i=0;i

您可以非常轻松地完成这项工作,通过元素之间的循环,在运行过程中构建一个空白的
对象

document.getElementById(“go”).addEventListener(“单击”,函数(){
var elems=document.queryselectoral(“.flat red”);
var result={};

对于(var i=0;i您可以很容易地通过元素间的循环来实现这一点,并在运行时构建一个空白的
对象

document.getElementById(“go”).addEventListener(“单击”,函数(){
var elems=document.queryselectoral(“.flat red”);
var result={};
对于(var i=0;i
let result={};
让输入=document.querySelectorAll('input');
for(让输入为输入){
结果[input.name]=结果[input.name]| |[];
结果[input.name].push(input.value);
}
document.write(JSON.stringify(result));

let result={};
让输入=document.querySelectorAll('input');
for(让输入为输入){
结果[input.name]=结果[input.name]| |[];
结果[input.name].push(input.value);
}
document.write(JSON.stringify(result));

使用reduce:

var elems=document.queryselectoral('.flat red');
var r=Array.from(elems)//转换为数组
.减少((ac,x)=>{
如果(!ac[x.name])
ac[x.name]=[];
ac[x.name].推送(x.value)
返回ac;
} ,{})
console.log(r)

使用reduce:

var elems=document.queryselectoral('.flat red');
var r=Array.from(elems)//转换为数组
.减少((ac,x)=>{
如果(!ac[x.name])
ac[x.name]=[];
ac[x.name].推送(x.value)
返回ac;
} ,{})
console.log(r)


它不是一个JSON对象,而是一个JS对象。当选中或全部选中时?你可以用javascript完成它!@IndritSholla问题主题中的你?它不应该在那里,真的很抱歉。咖啡有时不能正常工作:DIt不是一个JSON对象,而是一个JS对象。当选中或全部选中时?你可以用javascript完成它!@IndritSholla You主题?它本来就不在那里的,真的很抱歉。咖啡有时不能正常工作:一个香草javascript标记问题的Djquery解决方案?!?@Jamiec谢谢,没有看标签,我更新了我的答案。一个香草javascript标记问题的jquery解决方案?!?@Jamiec谢谢,没有看标签,我更新了我的答案。谢谢,th也很好。我只是在下面的答案上做了标记,因为我不熟悉reduce函数。祝你有愉快的一天!谢谢,这也很好。我只是在下面的答案上做了标记,因为我不熟悉reduce函数。祝你有愉快的一天!