Javascript创建对象属性值数组
给定Javascript中的这个对象Javascript创建对象属性值数组,javascript,node.js,Javascript,Node.js,给定Javascript中的这个对象 { "0": "hello", "1": { text: "world" } } 从该对象创建此数组的最短方法是什么 [ "hello", { text: "world" } ] 我见过有人使用Array.prototype.splice(theObject),但它似乎不适合我 更新: 输出的顺序需要得到保证 0和1可以是任意字符串值,并且需要在相应数组中维护属性级别的顺序 需要使用Node.js 6 只需使用Object.values:
{
"0": "hello",
"1": { text: "world" }
}
从该对象创建此数组的最短方法是什么
[
"hello",
{ text: "world" }
]
我见过有人使用Array.prototype.splice(theObject)
,但它似乎不适合我
更新:
0
和1
可以是任意字符串值,并且需要在相应数组中维护属性级别的顺序李>
只需使用Object.values:
console.log(Object.values({
“0”:“你好”,
“1:{案文:“世界”}
}));代码>如果要确保对象的原始关键帧与结果数组中的位置相对应,则不能依赖对象.values()
或来获取。。。在
循环中。您可以使用Object.keys()
对该数组进行排序
var keys = Object.keys(yourObject);
keys.sort();
var array = keys.map(key => yourObject[key]);
现在了解对.sort()
的调用可以包括一个comparator函数,用于对原始对象键施加所需的任何顺序。OP中的示例非常简单,上面的方法也可以。但是,更复杂的键可能需要自定义比较器
让src={
“0”:“你好”,
"1": {
案文:“世界”
}
}
让res=[src].map(it=>[it['0'],it['1']]
console.log(res)
尝试在循环中使用for..in,如下所示:
let obj = {
"0": "hello",
"1": { text: "world" }
}
let result = []
for(var value in obj){
result.push(obj[value])
}
这应根据键维护顺序,包括键有多个数字的情况
const测试={
“0”:“你好”,
"三":"三",,
“1”:{案文:“世界”},
"二":"二",,
“11”:“11”,
}
const transform=obj=>Object.keys(obj)
.sort((a,b)=>parseInt(a)>parseInt(b)?1:-1)
.map(key=>obj[key])
console.dir(transform(test))
这会起作用,但它不能保证“hello”
将是结果数组中的第一个值。感谢您的快速回答,请查看我更新的问题。我相信如果键进入一个以上的数字,这可能会给出错误的顺序,因为它会按照它认为的字母顺序对它们进行排序order@OliverRadini是的,这取决于钥匙;这次行动没有涉及太多细节。关键是.sort()
可以显式地施加任何所需的排序。我将扩展答案。