如何使用jQuery获取数组键名?

时间:2014-07-23 11:10:02

标签: javascript jquery arrays

我有一个这样的数组:

var myArray = new Array();

myArray['foo'] = {
    Obj: {
        key: value
    }
};
myArray['bar'] = {
    Obj: {
        key: value
    }
};

当我console.log(myArray)时,我只是空[ ]。当我尝试使用jQuery的each迭代数组时,该函数不会运行。

如何获得数组的'foo'和'bar'部分?

示例代码:

console.log(myArray); // [ ]

jQuery.each(myArray, function(key, obj) {
    console.log(key); // should be 'foo' following by 'bar'
});

此外,为什么这样做:

jQuery.each(myArray[foo], function(obj, values) {

    // Why does this work if there are no associative arrays in JS?

});

6 个答案:

答案 0 :(得分:2)

你可以通过以下方式获得钥匙:

Object.keys(variable name);

它返回键数组。

答案 1 :(得分:2)

Array是一个集合,其中每个元素都有一个索引。 要将元素添加到数组,可以使用push方法

 myArray.push('someValue');

或按索引设置元素(如果数组的长度< index):

 myArray.push('someValue1');
 myArray.push('someValue1');
 myArray[0] = 'new someValue1';

请注意,array是Object类的一个实例,因此您可以添加/编辑此对象的任何属性:

myArray.foo = '1';
myArray['bar'] = '2';

在这种情况下,您不会向数组添加新元素,而是定义对象的新属性。 如果您不习惯使用索引,则无需将对象创建为Array。 要创建新对象,请使用以下代码:

var myObj = {};

获取对象的所有属性 How to get all properties values of a Javascript Object (without knowing the keys)?

答案 2 :(得分:1)

如果您想要将其定义为对象,则需要将其定义为:

var myObj= {};

myObj.foo = ...;
myObj.bar = ...;

现在,您可以访问myObj["bar"]myObj.bar

等属性

注意:
要遍历所有属性,最好添加一个额外的检查。这是为了防止您循环继承属性。

for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
        // Do stuff.
    }
}

答案 3 :(得分:0)

var myArray = {};

myArray['foo'] = {  'key': 'value'  }

myArray['bar'] ={  'key': 'value'  }

console.log(myArray)

jQuery.each(myArray['foo'], function(obj, values) {

   console.log(obj, values)

});

Demo

答案 4 :(得分:0)

使用您的对象数组,您可以使用此功能:

var getKeys = function(obj) {
  if (!(typeof obj == "object")) return [];
  var keys = [];
  for (var key in obj) if (obj != null && hasOwnProperty.call(obj, key)) keys.push(key);
  return keys;
};

getKeys(myArray)会为您提供一系列密钥。

这基本上是underscores _.keys(myArray)函数的清除版本。你应该考虑使用下划线。

答案 5 :(得分:0)

// $ .each()函数可用于迭代任何集合,无论它是对象还是数组。

var myArray = {};
myArray['alfa'] = 0;
myArray['beta'] = 1;
$.each(myArray, function(key, value) {
      alert(key);
});

注意:结帐http://api.jquery.com/jQuery.each/了解详情。