我正在开发一个React应用程序,我需要转换这样的键值对象:
{
0: 'John',
1: 'Tim',
2: 'Matt'
};
只有这样的值的数组:
['John', 'Tim', 'Matt']
我如何做到这一点?
const obj = {
0: 'John',
1: 'Tim',
2: 'Matt'
};
const arr = /* ??? */;
答案 0 :(得分:6)
您可以使用Object.values
。
Object.values()
方法返回给定对象自己的可枚举属性值的数组,其顺序与for...in
循环提供的顺序相同(不同之处在于for-in循环也枚举了原型链中的属性。
var object = { 0: 'John', 1: 'Tim', 2: 'Matt' },
array = Object.values(object);
console.log(array);
使用ES6,您可以使用Array.from
并使用值回调。
var object = { 0: 'John', 1: 'Tim', 2: 'Matt' },
array = Array.from(Object.keys(object), k => object[k]);
console.log(array);
答案 1 :(得分:2)
const obj = {
0: 'John',
1: 'Tim',
2: 'Matt'
};
const arr = [];
for(let key in obj){
arr.push(obj[key]);
}
答案 2 :(得分:2)
您可以使用Object.values
命令。
根据 docs 。
Object.values()
返回一个数组,其元素是可枚举的 在对象上找到的属性值。属性的顺序是 与循环遍历属性值所给出的相同 手动对象
虽然它是ES2017
解决方案,但由于您使用的是反应,因此您可以将stage-0
作为预设babel
并访问此功能
var data ={
0: 'John',
1: 'Tim',
2: 'Matt'
};
var newdata = Object.values(data);
console.log(newdata);

还有其他方法,例如 Object.keys
,它将所有键作为数组提供,Object.entries
方法返回给定对象的数组自己的可枚举属性可能对您有用的[key, value]
对
答案 3 :(得分:0)
虽然您有数字键并且顺序没有间隙,但您可以使用Object.assign
将数组作为目标,将给定对象作为源。
var object = { 0: 'John', 1: 'Tim', 2: 'Matt' },
array = Object.assign([], object);
console.log(array);
答案 4 :(得分:0)
这是常用的一种:
const obj={
1:'Azamat',
2: 'Kanybek',
3: 'Manas'}
console.log(Object.values(obj))
对于键,值对:
const arr = [];
for(let key in obj){
arr.push([key,obj[key]])
}
console.log(arr)