8

prototypeJS ライブラリには、オブジェクト内の値の配列を返すメソッド Object.values() があります。

例えば:

 var myObj = {
   "key1" : "val1"
   "key2" : "val2"
 }
 Object.values(myObj) //returns ["val1", "val2"]

同じことをするjQueryメソッドはありますか?

4

4 に答える 4

14

直接行う方法はないと思いますが、次を使用できます$.map()

$.map(myObj, function(val, key) { return val; }); //returns ["val1", "val2"]

(ただし、コールバックが返された場合、nullまたはundefined特定のプロパティに対して、そのアイテムは新しい配列に含まれないことに注意してください。そのため、オブジェクトにそれらの値を持つプロパティがある場合は、別の方法で行う必要があります。コーディングは非常に簡単です。ただし、for..inループでスクラッチします。)

于 2013-02-09T21:43:16.770 に答える
5

prototypejs のvaluesメソッドは、JavaScript の組み込みObjectオブジェクトを拡張します。あなたが同じことをするのを止めるものは何もありません:

Object.values = function(object) {
  var values = [];
  for(var property in object) {
    values.push(object[property]);
  }
  return values;
}


var foo = {a:1, b:2, c:3};
console.log(Object.values(foo));
// [1, 2, 3]

または、改ざんしたくない場合は、上記のメソッドを jQuery オブジェクトに追加できますObject

$.values = function() { ... }
于 2013-02-09T22:35:22.093 に答える
1

ES6 を使用すると、次のことができます。

Object.values = x =>
        Object.keys(x).reduce((y, z) =>
            y.push(x[z]) && y, []);

これは、オブジェクトの値を含む配列を返すだけです。JQuery や _ などは必要ありません。


注: Object.values()現在、ES7 のドラフト段階です

babel の使用、インストール

  • babel-preset-es2017
  • babel-plugin-transform-runtime

Object.values/Object.entriesおよびその他の機能をサポートしES2017ます。

モジュールの推奨.babelrcに従って、次のようにファイルを構成します。

{
  "plugins": ["transform-runtime"],
  "presets": ["es2017"]
}
于 2016-05-26T10:13:45.097 に答える
0

Underscorejsには次の_.valuesメソッドがあります。 _.values({one : 1, two : 2, three : 3}); => [1, 2, 3]

このライブラリは JQuery を非常によく拡張し、prototypejs で素晴らしく機能します。

于 2013-02-09T23:21:29.410 に答える