[英]Best way to convert object into array
我有一個以下語法的對象文字:
const loader = {
"0": "b",
"1": "a",
"2": "r",
// arbitrary extra fields:
"foo": 123,
"quux": 456,
}
我想將它轉換為數組["b", "a", "r"]
然后轉換為字符串"bar"
,這是我的最終目標。 我不需要任何額外的字段,如果有的話,可以安全地丟棄它們。
很有可能使用Array.from(loader)
,但不幸的是Array.from
期望length
屬性存在,我沒有。
鑒於在我的情況下不保證對象文字鍵順序,這是我迄今為止提出的最簡潔的解決方案:
function convert(obj) {
const a = [];
for (const k in obj) {
a[k] = obj[k];
}
return a.join('');
}
雖然我不喜歡它,但它對我來說似乎是多余的和不優雅的。 有什么我可能錯過的嗎? 我可以自由使用ES6中的任何東西。
您可以轉換對象的數組並將連接的值作為字符串。
var loader = { 0: "b", 1: "a", 2: "r", foo: 123, quux: 456 }, string = Object.assign([], loader).join(''); console.log(string);
使用Object.keys
, filter
, map
和join
var output = Object.keys( loader ) //get the keys
.filter( s => !isNaN( s ) ) //remove non-numeric keys
.map( s => loader[s] ) //get values for filtered keys
.join( "" ); //join them
如果需要明確地對鍵進行排序,那么
var output = Object.keys( loader ) //get the keys
.filter( s => !isNaN( s ) ) //remove non-numeric keys
.sort( ( a, b ) => a - b );
.map( s => loader[s] ) //get values for filtered keys
.join( "" ); //join them
使用isNaN
只獲取那些數字。 sort
將在輸出數組中對您的keys
進行sort
,然后通過該鍵訪問,您可以通過reduce
或只使用map
然后join
來從loader
對象獲取值。
const loader = { "0": "b", "1": "a", "2": "r", // arbitrary extra fields: "foo": 123, "quux": 456, }; const obj = Object.keys(loader).filter(key => !isNaN(key)) .sort() .map(key => loader[key]) .join(''); console.log(obj);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.