如何在Javascript中将对象转换为数组

时间:2019-03-20 13:59:55

标签: javascript arrays object

我需要将对象转换为数组,这是我的对象,我需要转换数组

{value1: prop1, value2: prop2, value3: prop3};

预期产量

["value1": prop1, "value2": prop2, "value3":prop3]

我在下面尝试了我的代码

var obj = {value1: prop1, value2: prop2, value3: prop3};
var arr = [];
for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
             arr.push(key + ':' + obj[key]);
    }
};

输出错误,请参阅下文

["value1:prop1", "value2:prop2", "value3:prop3"]

预期如下

["value1": prop1, "value2": prop2, "value3":prop3]

4 个答案:

答案 0 :(得分:1)

您的方法很好,这个.push和对象定义不能像您期望的那样在Javascript中起作用:

var obj = {value1: 'aa', value2: 'bb', value3: 'cc'};
var arr = [];
for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
             const newObj = {};
             newObj[key] = obj[key];
             arr.push(newObj);
    }
};

console.log(arr);

答案 1 :(得分:1)

您的预期输出不是有效的JavaScript语法。有两种解决方法,您可以将对象转换为2d数组,其中内联数组保存对象中每个字段的键和值。

var obj = {value1: prop1, value2: prop2, value3: prop3};
var arr = [];
for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
         arr.push([key, obj[key]]);
    }
};

输出

[['value1', prop], ['value2', prop2], ['value3', prop3]]

如果您使用的是javascript es2017,则可以使用Object.entries(obj)

获得以上结果

答案 2 :(得分:0)

由于数组没有像php中那样的键,而JS数组中的键始终是数字,因此该方法不可行。

数组应如下所示:

let array = ["value1", "value2", "value3"]

包含的值通过索引调用:

// Just the value
array[0]

// Logging the value
console.log(array[0])

答案 3 :(得分:0)

假设您要获取具有单个属性的对象数组,则可以获取条目并使用computed property name映射新对象。

var object = { value1: 'prop1', value2: 'prop2', value3: 'prop3' },
    array = Object
        .entries(object)
        .map(([key, value]) => ({ key, value }));

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }