我想隐瞒这个javascript数组
[ "Data", [ "API", "Apiales", "Apiaceae", "Apia", ] ]
重新排列的json格式
[ {"name":"API","id":"1"}, {"name":"Apiales","id":"1"}, {"name":"Apiaceae","id":"1"}, {"name":"Apia","id":"1"} ]
由于
更新: 我试过这个
var aNewData =[];
for(i in aData[1]){
var item={};
item.name = aData[1][i];
item.id = "1";
aNewData[i]=item;
}
答案 0 :(得分:3)
ids来自哪里?测试以下脚本,您的数组位于aData
,结果将位于aNewData
:
var aNewData = [];
for (var i = 0; i < aData[1].length; i++) {
aNewData.push({
"name": aData[1][i],
"id": 20 + i
});
}
另见this example。
答案 1 :(得分:0)
您可以通过折叠轻松转换这些数据:
var sourceData = ["API","Apiales","Apiaceae","Apia"];
var transformed = sourceData.reduce(function(result, name, index) {
return result.concat({
name: name,
id: 20 + index
});
}, []);
这将基本上与scessor的for循环相同,但是以更加以数据为中心的方式。
这样想:
您保存源数据(包含所有“api *”字符串的数组)
您创建一个新的结果数组[]
(作为第二个参数传递给reduce
),应该作为下一个结果返回。
将一个未命名的函数传递给reduce
,每次调用时都会调用3个参数,即result
,这是您最近创建的数组,name
每个“api *”字符串的值,以及index
,这是原始数组中这些字符串的索引。
您可以连续查看每个“api *”字符串,并将包含所需数据的新对象放入其中。由于result.concat
将返回整个数组,您只需添加
将返回包含所有数据的result
数组。
但是,如果您希望向后兼容旧浏览器,我建议您使用underscore.js。