如何将以下数组转换为另一种格式,如下所示:
我的阵列:
var test=[{"1":"Input"},{"2":"Output"}]
转换数组:
var result=
[
{
"id": "1",
"name": "Input"
},
{
"id": "2",
" name": "Output"
}
]
我尝试使用此代码但无法正常工作。
var result = [];
for (var i = 0; i < test.length; i++) {
var newArray = {
id: Object.keys(test[i])[i],
name: test[i].name
}
result.push(newArray);
}
答案 0 :(得分:4)
内部数组对象没有name
属性,因此test[i].name
将是未定义的。您需要使用键值获取值。您也可以使用 map()
代替 for
循环来简化代码。
var test = [{
"1": "Input"
}, {
"2": "Output"
}];
var res = test.map(function(v) { // iterating over array object
var k = Object.keys(v)[0]; // getting object keys as an array & retrieving first key
return {
id: k, // setting id property as key
name: v[k] // and name property as value
}
});
document.write('<pre>' + JSON.stringify(res, null, 3) + '</pre>');
&#13;
答案 1 :(得分:3)
您应该使用array.prototype.map使用转换函数将数组转换为另一个数组。
array.prototype.map会对所有项目进行迭代,并对每个项目运行“转换功能”。
由于您的商品是一个如下所示的键值:{"1":"Input"}
,您唯一的问题是您不知道密钥。
要获取每个对象的键,可以使用Object.keys方法。
var test=[{"1":"Input"},{"2":"Output"}]; // input
var newArr = test.map(function(item){
var key = Object.keys(item)[0]; // get the object's keys and take the only key.
return {id: key, name: item[key]} // return the new object
});