对象数组,来自输入对象的每个键的对象

时间:2017-10-03 01:08:03

标签: javascript javascript-objects

我在将这些代码放在一起时遇到了一些问题。

{
name: 'bob',
age: 55,
role: 'baker'
}

想得到:

[[name:'bob'],[age:55],[role:'baker']]

这就是我所拥有的:

function valFunct(obj) {
var values =[];
for(var key in obj){
values.push(obj[key]);
}
return values
}

输出不是我想要的。

3 个答案:

答案 0 :(得分:3)

首先,[[name:'bob'],[age:55],[role:'baker']]不起作用,因为数组的索引应该是数字而不是字符串。你可能正在寻找这样的东西:



var input = {
  name: 'bob',
  age: 55,
  role: 'baker'
};

function transform(obj) {
  return Object.keys(obj).map(function(key) {
    return { [key]: obj[key] }
  });
}

console.log(transform(input));




或者您想将其转换为对象条目(如ES7 Object.entries):



var input = {
  name: 'bob',
  age: 55,
  role: 'baker'
};

function transform(obj) {
  return Object.keys(obj).map(function(key) {
    return [key, obj[key]];
  });
}

console.log(transform(input));




答案 1 :(得分:2)

var person = { first: "rafael", last: "cepeda", age: 24 };

function weird_fn(obj) {
    var arr = [];
    for (var p in obj) {
        var o = {};
        o[p] = obj[p];
        arr.push(o);
    }
    return arr;
}

console.log(weird_fn(person));

输出:

[ { first: 'rafael' }, { last: 'cepeda' }, { age: 24 } ]

答案 2 :(得分:-2)

如果您只想要一对数组,则可以修复推送

values.push([key, obj[key]]);