我正在尝试使用多个选择器的值在jquery中创建一个新对象。例如:
loopSelector = $('.myClass');
loopSelector.each(function(i, elem) {
var1 = $(elem).parents('li').text();
var2 = $(elem).parents('p').text();
var newArray = [{
animal: var1
age: var2
}];
console.log(newArray);
}
在控制台中,我得到:
但是当我尝试console.log(newArray.age);
时,我得到undefined
3次。我的目标是按年龄值比较所有对象。
有更好的方法吗?
答案 0 :(得分:1)
由于您要创建一个所选元素相同的数组,但每个元素的数据表示形式不同,因此请考虑使用.map()
而不是 Serviceprovidername
_______________________
X
Y
Z
:
.each()
请注意最后使用.get()
(正如Taplar在评论中指出的那样),它将jQuery对象转换为常规Javascript数组。
或者添加了一些精美的ES6功能来整理一些东西:
loopSelector = $('.myClass');
var array = loopSelector.map(function (i, elem) {
var animal = $(elem).parents('li').text();
var age = $(elem).parents('p').text();
return {
animal: animal,
age: age
};
}).get();
console.log(array);
答案 1 :(得分:0)
您可以尝试下面的代码片段直接访问对象:
loopSelector = $('.myClass');
var newArray = [];
loopSelector.each(function(i, elem) {
var obj = {};
var1 = $(elem).parents('li').text();
var2 = $(elem).parents('p').text();
obj.animal = var1;
obj.age = var2;
newArray.push(obj);
}
newArray.map(val => {
//Here your will be able to access directly to objects with key name.
console.log(val)
});