65

array_keys()PHP /に相当する JavaScript が見つかりませんarray_values()

PHP に慣れていない人のために、次の JavaScript ハッシュを指定します。

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

キーの配列を取得するにはどうすればよいですか。つまり、

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

値を持つ同じ質問、つまり、

[3, 4, 42]

jQueryが使えます。

4

9 に答える 9

84

ES5対応(または shimmed)ブラウザーでは...

var keys = Object.keys(myHash);

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

MDN のシム...

于 2012-05-02T13:53:22.823 に答える
51
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);
于 2012-05-02T13:53:24.490 に答える
15

2番目の回答(執筆時点)は次のとおりです。

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

しかし、私はjQuery独自のものを使用することを好み$.mapます:

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

jQuery はブラウザー間の互換性を考慮しているためです。さらに、短いです:)

いずれにせよ、私は常に可能な限り機能的であるように努めています。ワンライナーはループよりも優れています。

于 2014-01-17T02:39:52.883 に答える
12

LodashまたはUnderscore.jsの _.keys() および _.values() 関数を見てください。

于 2014-02-11T14:29:03.127 に答える
4
function getKeys(obj){
    var keys = [];
    for (key in obj) {
        if (obj.hasOwnProperty(key)) { keys[keys.length] = key; }
    } 
    return keys;
}
于 2012-05-02T13:54:25.687 に答える
2

それが役立つかどうかはわかりませんが、「foreach」はすべてのキーを通過します。

for (var key in obj1) {...}
于 2012-05-02T13:54:14.823 に答える
1

使用する:

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)
于 2013-10-09T15:56:00.433 に答える
1

phpjs.orgの実装は次のとおりです。

これは私のコードではありません。役に立つリソースを紹介しているだけです。

于 2012-05-02T13:55:08.610 に答える
-1

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;
}
于 2012-05-02T13:55:59.207 に答える