Javascript 如何从$each函数中的选择器变量创建具有键/值对的对象数组?
我试图在jquery中创建一个新对象,其中包含多个选择器的值。例如:Javascript 如何从$each函数中的选择器变量创建具有键/值对的对象数组?,javascript,jquery,Javascript,Jquery,我试图在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.
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);
}
在控制台中,我得到:
- 阵列(1)
- 0:{动物:“猫”,年龄:12}
- 阵列(1)
- 0:{动物:'狗',年龄:5}
- 阵列(1)
- 0:{动物:'山羊',年龄:7}
console.log(newArray.age)时代码>我得到未定义
3次。我的目标是通过年龄值来比较所有的物体
有更好的方法吗?
< p>因为要创建一个相同元素的数组,只是用不同的数据表示形式,考虑使用而不是<代码> .eh()<代码>:
loopSelector=$('.myClass');
var array=loopSelector.map(函数(i,elem){
var animal=$(elem).parents('li').text();
var age=$(elem).parents('p').text();
返回{
动物:动物,
年龄:年龄
};
}).get();
console.log(数组);
注意末尾使用的(正如Taplar在注释中指出的),它将jQuery对象转换为常规Javascript数组
或者加入一些别致的ES6功能来稍微整理一下:
const数组=$('.myClass').map((i,elem)=>{
const animal=$(elem).parents('li').text();
常量年龄=$(elem).parents('p').text();
返回{动物,年龄};
}).get();
console.log(数组);
您可以尝试以下代码段直接访问对象:
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)
});
newArray[0].age
这是一个数组…它是一个数组,因为您必须在newarrayal之后定义[0]
。因此,如果要比较所有年龄,您会遇到一个问题,即您没有将数组持久化到每个年龄之外。每次迭代都要创建一个新的单元素数组。