[英]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.