Javascript 创建包含对象的新数组

Javascript 创建包含对象的新数组,javascript,arrays,Javascript,Arrays,我希望创建一个包含来自另一个对象的对象的新数组 这是我的尝试: var obj = { a:{}, b:{} } var arr = new Array().concat(obj,[]); 遗憾的是,这将返回如下数组: Array[1] 0: Object a: Object b: Object Array[2] 0: Object a: Object 1: Object b: Object 但是,所需的阵

我希望创建一个包含来自另一个对象的对象的新数组

这是我的尝试:

var obj =  {
    a:{},
    b:{}
}

var arr = new Array().concat(obj,[]);
遗憾的是,这将返回如下数组:

Array[1]
0: Object
    a: Object
    b: Object
Array[2]
    0: Object
        a: Object
    1: Object
        b: Object
但是,所需的阵列应如下所示:

Array[1]
0: Object
    a: Object
    b: Object
Array[2]
    0: Object
        a: Object
    1: Object
        b: Object

如何在不必循环对象的情况下以尽可能短的方式实现这一点?

下面是一个没有显式循环的示例:

var r = Object.keys(obj).map(function(key) {
    var o = {};
    o[key] = this[key];
    return o;
}, obj);

您能说明期望的最终结果应该是什么样子吗?您的意思是希望
var arr=[obj.a,obj.b]?问题是你想要
[{a:obj.a},{b:obj.b}]
“不必循环对象”--避免代码中显式循环的技术原因是什么?你能解释一下通过将对象转换成数组来解决什么问题吗?这听起来像是个XY问题。