jQuery并根据数据属性映射到新对象
我试图根据数据属性从多个元素中提取所有ID 这是我的html:jQuery并根据数据属性映射到新对象,jquery,arrays,each,Jquery,Arrays,Each,我试图根据数据属性从多个元素中提取所有ID 这是我的html: <div class="row"> <div class="item" data-element='{"id":1, "name":"John"}'>John</div> <div class="item"></div> </div> <div class="row"> <div class="item"data-element='
<div class="row">
<div class="item" data-element='{"id":1, "name":"John"}'>John</div>
<div class="item"></div>
</div>
<div class="row">
<div class="item"data-element='{"id":2, "name":"Peter"}'>Peter</div>
<div class="item"></div>
</div>
问题是我只得到最后一个元素。控制台日志显示2彼得
我希望最终结果是所有id以及以数组形式提取的名称,如:
id = [1,2]
name = ['John', 'Peter']
您应该在
功能中使用映射
:
var结果=[];
var id=[];
变量名称=[];
$(“[data element]”)。每个(函数(){
结果=$(this).data('element');
id[id.length]=result.id;
name[name.length]=result.name;
$.map(结果,函数(val,i){
console.log(val)
});
});
控制台日志(id)
console.log(名称)
约翰
彼得
从空数组开始,在一个循环中将每个值推入相应的数组中。你似乎把事情复杂化了
var arrObj={id:[],name:[]};
$(“[data element]”)。每个(函数(){
var data=$(this.data('element');
arrObj.id.push(data.id);
arrObj.name.push(data.name);
});
console.log(JSON.stringify(arrObj,null,'))
约翰
彼得
在forEach循环的每次迭代中,都将空数组的值设置为$(this).data('element')
。因此,在对其求值时,最后一次迭代将始终是result
的值。使用数组方法将项目添加到数组中,而不是对其进行设置;所以不是result=$(this.data('element')代码>应该是result.push($(this.data('element'))代码>非常感谢您。
id = [1,2]
name = ['John', 'Peter']