我需要将对象转换为数组,这是我的对象,我需要转换数组
{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]
答案 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; }