80

Pythonでは、このメソッドを使用して辞書の.values()を反復処理できます。

例えば:

mydict = {'a': [3,5,6,43,3,6,3,],
          'b': [87,65,3,45,7,8],
          'c': [34,57,8,9,9,2],}
values = mydict.values():

含まれている場所values

[
    [3,5,6,43,3,6,3,],
    [87,65,3,45,7,8],
    [34,57,8,9,9,2],
]

Javascriptで辞書の値のみを取得するにはどうすればよいですか?

私の元の印刷例は、私が何をしたいのか明確ではありませんでした。辞書内の値のリスト/配列のみが必要です。

リストを循環して値の新しいリストを作成できることに気付きましたが、もっと良い方法はありますか?

4

8 に答える 8

101

更新
私はアドナンの答えが最初だったので賛成しました。それが役に立ったら、もう少し詳細を投稿します。

for..inループはあなたが探しているものです-

var dictionary = {
    id:'value',
    idNext: 'value 2'
}

for (var key in dictionary){
    //key will be -> 'id'
    //dictionary[key] -> 'value'
}

dictionaryオブジェクト内のすべてのキーを取得するにObject.keys(dictionary)
は、次のことができます。つまり、配列ループで同じことを実行できます。

var keys = Object.keys(dictionary);
keys.forEach(function(key){
    console.log(key, dictionary[key]);
});

これは、醜いif..elseループを記述せずにキーをフィルタリングする場合に特に便利です。

keys.filter(function(key){
    //return dictionary[key] % 2 === 0;
    //return !key.match(/regex/)
    // and so on
});

更新-ディクショナリ内のすべての値を取得するには、現在、ループを実行する以外に方法はありません。ただし、ループをどのように行うかは選択の問題です。個人的には

var dictionary = {
    a: [1,2,3, 4],
    b:[5,6,7]
}
var values = Object.keys(dictionary).map(function(key){
    return dictionary[key];
});
//will return [[1,2,3,4], [5,6,7]]
于 2012-07-31T06:45:52.217 に答える
32

Object.values()はFirefox47とChrome51で利用できます。他のブラウザ用の1行のポリフィルは次のとおりです。

Object.values = Object.values || function(o){return Object.keys(o).map(function(k){return o[k]})};
于 2014-05-21T10:37:21.203 に答える
27

jQueryには、$。map()を使用したかなり1行のバージョンがあります。

var dict = {1: 2, 3: 4};
var values = $.map(dict, function(value, key) { return value });
var keys = $.map(dict, function(value, key) { return key });
于 2013-08-05T16:23:33.520 に答える
12

他の答えが間違っていると言っているわけではありませんが、外部ライブラリの使用に反対していない場合は、underscore.jsに正確にこれを行うためのメソッドがあります。

_.values({one: 1, two: 2, three: 3});
// returns [1, 2, 3]
于 2014-07-23T18:37:08.183 に答える
6

使用できますfor in

mydict = {'a': [3,5,6,43,3,6,3,],
          'b': [87,65,3,45,7,8],
          'c': [34,57,8,9,9,2]};
for (var key in mydict){
    alert(mydict[key]);
}
于 2012-07-31T06:38:20.207 に答える
5

ES6では、現在Firefoxでデフォルトでサポートされており、Chromeでフラグが設定されているため、次のことができます。

a = {'a': [3,5,6,43,3,6,3,],
      'b': [87,65,3,45,7,8],
      'c': [34,57,8,9,9,2]}
values = [a[x] for (x in a)];

valuesこれで、期待される配列になります。

これはコードゴルフにも役立ちます。周囲のスペースを削除するforと、17文字に削減されます。

于 2015-02-09T16:51:43.017 に答える
3

javascriptではfor..in、オブジェクトのプロパティをループするために使用します。

var mydict = {
    'a': [3,5,6,43,3,6,3,],
    'b': [87,65,3,45,7,8],
    'c': [34,57,8,9,9,2]
 };

for (var key in mydict) {
  console.log(mydict[key]);
}
于 2012-07-31T06:38:46.680 に答える
0

値のみを取得する場合は、次のコードを使用します。

 for(keys in mydict){
   var elements = mydict[keys];
   console.log(elements);
 }

要素配列のインデックス値によって個々の要素を取得できます。

于 2014-01-08T12:25:43.463 に答える