Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery获取数组键名?_Javascript_Jquery_Arrays - Fatal编程技术网

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

Javascript 如何使用jQuery获取数组键名?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有这样一个数组: var myArray = new Array(); myArray['foo'] = { Obj: { key: value } }; myArray['bar'] = { Obj: { key: value } }; 当我执行console.log(myArray)时,我得到的是空的[]。当我尝试使用jQuery的each迭代数组时,函数不会运行 如何获取数组的“foo”和“bar”部分 示例代码: co

我有这样一个数组:

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?

});
您可以通过以下方式获取密钥:

Object.keys(variable name);

它返回一个键数组。

如果要这样访问它,需要将其定义为一个对象:

var myObj= {};

myObj.foo = ...;
myObj.bar = ...;
现在,您可以访问属性,如
myObj[“bar”]
myObj.bar

注意:
要循环遍历所有属性,最好添加一个附加检查。这是为了防止在继承属性之间循环

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

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

 myArray.push('someValue');
或按索引设置元素(如果数组长度<索引):

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

myArray.foo = '1';
myArray['bar'] = '2';
在这种情况下,您将不会向数组中添加新元素,而是定义对象的新属性。 如果不习惯使用索引,则不需要将对象创建为数组。 要创建新对象,请使用以下代码:

var myObj = {};
要获取对象的所有属性,请参见

对于对象数组,您可以使用以下功能:

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)将为您提供一个密钥数组

这基本上是一个清除版本的u.keys(myArray)函数。您应该考虑使用下划线。< /p> //$.eh()函数可以用于遍历任何集合,无论它是对象还是数组。
var myArray = {};
myArray['alfa'] = 0;
myArray['beta'] = 1;
$.each(myArray, function(key, value) {
      alert(key);
});

注意:有关更多信息,请签出。

javascript中没有关联数组,当使用字符串作为键时,您有一个对象。那么我为什么可以
jQuery.each(myArray[foo],function(key,obj){
?当我需要为项目创建设置数组时,如何使用某种关联的键数组这是多维数组在本例中是二维的注意:数组实际上也是Javascript中的对象,具有自己可以设置/获取的属性。这就是问题中的最后一个示例起作用的原因。将接受此答案。我从来不知道浏览器将数组转换为对象。
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;
};
var myArray = {};
myArray['alfa'] = 0;
myArray['beta'] = 1;
$.each(myArray, function(key, value) {
      alert(key);
});