使用JavaScript给出该对象
{
"0": "hello",
"1": { text: "world" }
}
从该对象创建此数组的最短方法是什么?
[
"hello",
{ text: "world" }
]
我见过有人在使用Array.prototype.splice(theObject)
,但它似乎不适用于我。
更新:
0
和1
可以是任意字符串值,并且属性级别的顺序需要在相应的数组中维护。 答案 0 :(得分:4)
只需使用Object.values:
console.log(Object.values({
"0": "hello",
"1": { text: "world" }
}));
答案 1 :(得分:2)
如果要确保对象的原始键与结果数组中的位置相对应,则不能依赖Object.values()
或for ... in
循环。您可以使用Object.keys()
并对数组进行排序。
var keys = Object.keys(yourObject);
keys.sort();
var array = keys.map(key => yourObject[key]);
现在可以理解,对.sort()
的调用可以包含一个比较器函数,以对原始对象键施加所需的任何顺序。 OP中的示例非常简单,上面的示例就可以了。但是,更复杂的键可能需要自定义比较器。
答案 2 :(得分:1)
这应该保持基于键的顺序,包括键多于一位的情况
const test = {
"0": "hello",
"3": "three",
"1": { text: "world" },
"2": "two",
"11": "eleven",
}
const transform = obj => Object.keys(obj)
.sort((a, b) => parseInt(a) > parseInt(b) ? 1 : -1)
.map(key => obj[key])
console.dir(transform(test))
答案 3 :(得分:0)
let src = {
"0": "hello",
"1": {
text: "world"
}
}
let res = [src].map(it => [it['0'], it['1']])
console.log(res)
答案 4 :(得分:0)
尝试像这样使用for..in循环:
let obj = {
"0": "hello",
"1": { text: "world" }
}
let result = []
for(var value in obj){
result.push(obj[value])
}