[英]Converting Object to Array using ES6 features
給定一個 javascript 對象,如何將其轉換為 ECMAScript-6 中的數組?
例如,給定:
var inputObj = {a:'foo', b:[1,2,3], c:null, z:55};
預期輸出將是:
['foo', [1,2,3], null, 55]
結果中元素的順序對我來說並不重要。
在帶有箭頭函數的keys
上使用 (ES5) Array::map
(僅用於簡短語法,而非功能):
let arr = Object.keys(obj).map((k) => obj[k])
真正的 ES6 風格是編寫一個生成器,並將該可迭代對象轉換為一個數組:
function* values(obj) {
for (let prop of Object.keys(obj)) // own properties, you might use
// for (let prop in obj)
yield obj[prop];
}
let arr = Array.from(values(obj));
遺憾的是,沒有對象迭代器進入 ES6 原生版本。
只需使用Object.values
Object.values(inputObj); // => ['foo', [1,2,3], null, 55]
這可以使用數組理解語法來實現:
[for (key of Object.keys(inputObj)) inputObj[key]]
用法示例:
var inputObj = {a:'foo', b:[1,2,3], c:null, z:55};
var arr = [for (key of Object.keys(inputObj)) inputObj[key]];
console.log(arr);
// prints [ 'foo', [ 1, 2, 3 ], null, 55 ]
ES7方式:
let obj = { a: "foo", b: "bar", c: 1, d: [1, 2, 3, 4] }
Object.values(obj)
// output --> ['foo', 'bar', 1, [1, 2, 3, 4]
總而言之,在 ES6 中,有三 (3) 種變體可以將對象轉換為數組,如下所示:
const MyObjects = { key1: 'value 1', key2: 'value 2', };
// Method 1: Converts the keys to Array
// --------------------------------------
Object.keys(MyObjects);
// ['key1', 'key2']
// Method 2 Converts the Values to Array
// --------------------------------------
Object.values(MyObjects);
// ['value 1', 'value 2']
// Method 3 Converts both Values and Keys
// --------------------------------------
Object.entries(MyObjects);
// [ ['key1', 'value 1'], ['key2', 'value 2'] ]
可以按如下方式將數組轉換回對象:
const array = [ ['one', 1], ['two', 2], ];
Object.fromEntries(array);
// { one: 1, two: 2 }
Array.map
相當於@Bergi的箭頭函數(有關Array.map
更多信息,請參閱MDN )。
2020 年編輯:轉換為代碼段並添加了替代方案
const obj = { a: 'foo', b: [1, 2, 3], c: null, z: 55 }, nwArr = Object.keys(obj).map(k => obj[k]), // Alternative nwArr2 = Object.fromEntries(Object.entries(obj)); nwArr.a = "bar"; nwArr2.a = "foobar" console.log(`obj.a: ${obj.a}, nwArr.a: ${nwArr.a}, nwArr2.a: ${nwArr2.a}`);
const address = {
street: "bew1111",
city: "err111",
country: "ind11"
};
const address2 = {
street: "bewscxsd",
city: "errdc",
country: "indcdsc"
};
我們這里有兩個對象,我將使用 2 種方法將兩個對象分配到 Array
Object.entries()
Object.keys()
第一個從這里開始-----
var firstar = Object.entries(address);
在這里,我將地址分配給firstar
,當你運行它時,你會得到這樣的輸出
(3) [Array(2), Array(2), Array(2)]
第二個從這里開始
var secstar = Object.keys(address2);
在這里,我將 address2 分配給secstar
,當你運行它時,你會得到這樣的輸出
(3) ["street", "city", "country"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.