哈希键/值作为数组



我找不到 PHP 的 JavaScript 等价物 array_keys()/array_values()

对于不熟悉PHP的人,给定以下JavaScript哈希:

var myHash = {"apples": 3, "oranges": 4, "bananas": 42}

如何获取密钥数组,即

["apples", "oranges", "bananas"]

与值相同的问题,即

[3, 4, 42]

可以使用jQuery。

在 ES5 支持(或填充)的浏览器中...

var keys = Object.keys(myHash);
var values = keys.map(function(v) { return myHash[v]; });
<小时 />

来自MDN的垫片...

  • 对象键

  • Array.prototype.map

var a = {"apples": 3, "oranges": 4, "bananas": 42};    
var array_keys = new Array();
var array_values = new Array();
for (var key in a) {
    array_keys.push(key);
    array_values.push(a[key]);
}
alert(array_keys);
alert(array_values);

第二个答案(在撰写本文时)给出:

var values = keys.map(function(v) { return myHash[v]; });

但我更喜欢使用jQuery自己的$.map

var values = $.map(myHash, function(v) { return v; });

因为jQuery负责跨浏览器兼容性。另外,它更短:)

无论如何,我总是尽量发挥功能。单行比循环更好。

查看 Lodash 或 Underscore.js 中的 _.keys() 和 _.values() 函数:

  • 下划线.js _.键
  • 下划线.js _.值
  • 洛达什 _.keys
  • 洛达什 _.值
function getKeys(obj){
    var keys = [];
    for (key in obj) {
        if (obj.hasOwnProperty(key)) { keys[keys.length] = key; }
    } 
    return keys;
}

我不知道它是否有帮助,但"foreach"通过所有键:

for (var key in obj1) {...}
以下是

phpjs.org 的实现:

  • array_values
  • array_keys

这不是我的代码。我只是给你指出一个有用的资源。

使用:

var myHash = {"apples": 3, "oranges": 4, "bananas": 42}
vals=(function(e){a=[];for (var i in e) a.push(e[i]); return a;})(myHash).join(',')
keys=(function(e){a=[];for (var i in e) a.push(  i ); return a;})(myHash).join(',')
console.log(vals,keys)

基本上:

array=(function(e){a=[];for (var i in e) a.push(e[i]); return a;})(HASHHERE)
下面是

PHP .js 库中array_keys的一个很好的例子:

function array_keys (input, search_value, argStrict) {
    // Return just the keys from the input array, optionally only for the specified search_value
    var search = typeof search_value !== 'undefined',
        tmp_arr = [],
        strict = !!argStrict,
        include = true,
        key = '';
    for (key in input) {
        if (input.hasOwnProperty(key)) {
            include = true;
            if (search) {
                if (strict && input[key] !== search_value) {
                    include = false;
                }
                else if (input[key] != search_value) {
                    include = false;
                }
            }
            if (include) {
                tmp_arr[tmp_arr.length] = key;
            }
        }
    }
    return tmp_arr;
}

array_values(来自同一个 PHP.js 库)也是如此:

function array_values (input) {
    // Return just the values from the input array
    var tmp_arr = [],
        key = '';
    for (key in input) {
        tmp_arr[tmp_arr.length] = input[key];
    }
    return tmp_arr;
}

最新更新