2

i have some input fields

<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" />

I want to generate a multidimensional array like this

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

What i tried is

$(".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);

I know it doesnt work. Any ideas to solve it !

2 Answers 2

2

You need to declare a as an array outside your .each code, and then push each object into it. Try this:

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" />

Sign up to request clarification or add additional context in comments.

Comments

0

Use .map() instead and in function create object with target structure.

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" />

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.