辞書としてリテラルを使用しましたが、サードパーティのバインディングツールは配列のみを取ります。
これは1つの方法ですが、もっと良い方法はありますか?
var arr = [];
$.each(objectLiteral, function () { arr.push(this); });
辞書としてリテラルを使用しましたが、サードパーティのバインディングツールは配列のみを取ります。
これは1つの方法ですが、もっと良い方法はありますか?
var arr = [];
$.each(objectLiteral, function () { arr.push(this); });
私はあなたの解決策に何も悪いことはないと思います。
これは短いものです:
var arr = $.map(objectLiteral, function (value) { return value; });
あなたの方法はうまく、明確で読みやすいです。jQueryなしでそれを行うには、次のfor (..in..)
構文を使用します。
var arr = [];
for (prop in objectLiteral) {
arr.push(objectLiteral[prop]);
}
バニラJSで...
オブジェクトリテラルを変換したい場合
var obj = {
species: 'canine',
name: 'Charlie',
age: 4
}
配列の配列に
[['species', 'canine'], ['name', 'Charlie'], ['age', 4]]
これが1つの方法です
function objToArr(obj){
var arr = [];
for (var key in obj){
arr.push([key, obj[key]]);
}
return arr;
}
const objectLiteral = { hell: 'devil' };
const ver1 = Object.keys(objectLiteral); // ['hell']
const ver2 = Object.values(objectLiteral); // ['devil']
const ver3 = Object.entries(objectLiteral); // [['hell', 'devil']]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Object/keys https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects / Object / values https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Object/entries
ES2017では、使用できるようObject.entries
になりました。ES6の非構築サポートを使用すると、結果の配列を非常にうまく使用できます。例
Object.entries(objectLiteral).filter(([key, value]) => !!value).map(([key, value]) => key)
値を持つすべてのプロパティを取得します