Object.values/Object.entriesのステージ3の提案 を見ており、現在のJavaScriptプロジェクトでそれを使用したいと考えています。
ただし、それをサポートするBabelプリセットがあるかどうかはわかりません。上記にリンクされているGitHubリポジトリはステージ3の提案であると述べているため、それがbabel-preset-stage-3の一部であると想定しましたが、そうではないようです。
今日Object.entriesを使用できるBabelプリセット(またはプラグインもありますか)はありますか?
babel を使用してインストール
Object.values
/Object.entries
およびその他の* ES20 **機能をサポートします。
モジュールによる推奨に従って、。babelrcを次のように構成します。
{
"plugins": ["transform-runtime"],
"presets": ["env"]
}
私がやったのはcore-js
そして、ファイルの先頭でこれを呼び出すだけです:
require('core-js/fn/object/entries');
この製 Object.entries
利用可能。 @FelixKlingへのクレジット。
更新:
コメントに記載されているように、map
の代わりにreduce
関数を使用すると、パフォーマンスを改善できます。
コードでは大文字と小文字が区別されることに注意してください(object != Object
)。
// Object.values
var objectToValuesPolyfill = function(object) {
return Object
.keys(object)
.map(
function(key) {
return object[key];
}
);
}
Object.values = Object.values || objectToValuesPolyfill;
// Object.entries
var objectToEntriesPolyfill = function(object) {
return Object
.keys(object)
.map(
function(key) {
return [key, object[key]];
}
);
}
Object.entries = Object.entries || objectToEntriesPolyfill;
使用法:
// es6
Object.values = Object.values || (x => Object.keys(x).map(k => x[k]));
Object.entries = Object.entries || (x => Object.keys(x).map(k => [k, x[k]]));
// es5
Object.values = Object.values || function(x){
return Object.keys(x).map(function(k){
return x[k];
})
};
Object.entries = Object.values || function(x){
return Object.keys(x).map(function(k){
return [k, x[k]];
})
};
const a = {
key: "value",
bool: true,
num: 123
}
console.log(
Object.values(a)
)
console.log(
Object.entries(a)
)