在jQuery中获取输入属性并使用索引创建多维数组

时间:2018-11-25 11:16:39

标签: javascript jquery arrays

我有一些输入字段

<input class="first" type="text" unique="001" value="2" />
<input class="second" id="001" type="text" value="2" />

<input class="first" type="text" unique="002" value="3" />
<input class="second"  id="002" type="text" value="2" />

<input class="first" type="text" unique="003" value="4" />
<input class="second"  id="003" type="text" value="3" />

我想生成一个这样的多维数组

a={
    {value:2, unique:001, value2:2},
    {value:3, unique:002, value2:2},
    {value:4, unique:003, value2:3},
}

我尝试过的是

$(".first").each(function() {
  var a={};
  var x=a['value']=$(this).val();  
  var y=a['unique']=$(this).attr('unique');  
  var z=a['value2']=$('#'+y).val();
}) 
console.log(a);

我知道它不起作用。有任何解决办法!

2 个答案:

答案 0 :(得分:2)

您需要将a声明为.each代码之外的数组,然后将每个对象放入其中。试试这个:

var a = [];
$(".first").each(function() {
var x=$(this).val();  
var y=$(this).attr('unique');  
var z=$('#'+y).val();
a.push({value: x, unique: y, value2: z});
});
console.log(a);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input class="first" type="text" unique="001" value="2" />
<input class="second" id="001" type="text" value="2" />

<input class="first" type="text" unique="002" value="3" />
<input class="second"  id="002" type="text" value="2" />

<input class="first" type="text" unique="003" value="4" />
<input class="second"  id="003" type="text" value="3" />

答案 1 :(得分:0)

改为使用.map()并在函数中创建具有目标结构的对象。

var obj = $(".first").map(function(){
  return {
    'value': this.value, 
    'unique': $(this).attr('unique'),
    'value2': $('#'+$(this).attr('unique')).val()
  }
}).toArray();
console.log(obj);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="first" type="text" unique="001" value="2" />
<input class="second" id="001" type="text" value="2" />

<input class="first" type="text" unique="002" value="3" />
<input class="second"  id="002" type="text" value="2" />

<input class="first" type="text" unique="003" value="4" />
<input class="second"  id="003" type="text" value="3" />