jQuery中的等效函数array_keys是什么?

5

可能是重复问题:
如何用jQuery获取数组键?

php内置函数array_keys()在jquery中的等价函数有哪些? 是否有与php的array_keys()类似的内置函数?

请给出建议。


1
请查看以下内容:https://dev59.com/inM_5IYBdhLWcg3wt1vD - Josh
1
顺便说一下:Javascript中的数组只能有数字键,没有所谓的关联数组。它只能通过对象来模拟(但存在缺陷)。 - dan-lee
5个回答

4

您需要定义自己的函数来获得相同的功能。尝试这样做:

function arrayKeys(input) {
    var output = new Array();
    var counter = 0;
    for (i in input) {
        output[counter++] = i;
    } 
    return output; 
}

arrayKeys({"one":1, "two":2, "three":3}); // returns ["one","two","three"]

3

在jQuery中没有特定的方法来实现这一点。虽然有一种JavaScript方法,但它目前还没有得到广泛支持 Object.keys() 因此人们不会将其用于通用项目。我能想到的最好的方法是

var keys = $.map(your_object, function(value, key) {
  return key;
});

2
这是最好的答案,但Object.keys()现在得到广泛支持,包括IE9+ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys - sMyles

3

您不需要使用jQuery或任何其他库来实现这个功能——它是Javascript的标准部分。

for(var key in myObject) {
    alert(key);
}

这应该足以使你循环遍历对象。但是如果你想要将键值放入它们自己的数组中(即将其转换为 PHP 函数的真正克隆),那么扩展上面的内容非常简单:

function array_keys(myObject) {
    output = [];
    for(var key in myObject) {
        output.push(key);
    }
    return output;
}

请注意,使用for(..in..)技术遍历对象时需要注意一些限制,例如不希望包含的属性或方法(例如核心系统属性),但对于您自己创建的简单对象或从JSON字符串创建的对象来说,这是理想的方法。
(有关注意事项的更多信息,请参见http://yuiblog.com/blog/2006/09/26/for-in-intrigue/

1
在JavaScript中,没有类似于关联数组的东西。对象(对象字面量)处理类似的情况。
var keys = [], i = 0;    
for( keys[ i++ ] in yourObject );

现在keys包含了所有yourObject的属性名称(键)。


1

看看PHPJS,这个项目旨在使用最少的依赖关系在纯JavaScript中复制许多PHP函数。在您的情况下,您需要{{link2:array_keys}}。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接