Javascript 如何从$each函数中的选择器变量创建具有键/值对的对象数组?

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.

我试图在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);
}
在控制台中,我得到:

  • 阵列(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]
。因此,如果要比较所有年龄,您会遇到一个问题,即您没有将数组持久化到每个年龄之外。每次迭代都要创建一个新的单元素数组。