Javascript 用于重新排列JSON对象的JQuery数组
我想转换这个javascript数组 [ "Data", [ "API", "Apiales", "Apiaceae", "Apia", ] ]Javascript 用于重新排列JSON对象的JQuery数组,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我想转换这个javascript数组 [ "Data", [ "API", "Apiales", "Apiaceae", "Apia", ] ] 身份证是从哪里来的?测试以下脚本,您的数组位于aData中,结果将位于aNewData: var aNewData = []; for (var i = 0; i
身份证是从哪里来的?测试以下脚本,您的数组位于
aData
中,结果将位于aNewData
:
var aNewData = [];
for (var i = 0; i < aData[1].length; i++) {
aNewData.push({
"name": aData[1][i],
"id": 20 + i
});
}
var aNewData=[];
对于(var i=0;i
另请参见。您可以通过折叠轻松转换这些数据: 这将为您提供与scessor的for循环基本相同的功能,但更以数据为中心 你可以这样想:
[]
(作为第二个参数传递给reduce
),该数组应作为下一个结果返回reduce
,每次调用该函数时,将使用3个参数调用该函数,即result
,它是您最近创建的数组,name
这些“api*”字符串的值,以及index
,它是原始数组中这些字符串的索引result.concat
将返回整个数组,您只需添加这些结果
数组但是,如果您想与旧浏览器向后兼容,我建议您使用。这些id是凭空而来的吗?或者他们只是从20开始计算?id只是作为一个例子,来了解如何关联第二个密钥:pair value(如果需要),Thankstanks scessor,它的性能是否比我更新的解决方案更好?不客气。我们的解决方案之间应该没有性能差异。@Jaidepsingh使用
for…in
对数组进行迭代不是一个好的做法。使用一个简单的作为
,就像scessor所做的那样。谢谢,从你的回答中学到了很多东西,这正是我所希望的。很高兴你能利用它;)
var aNewData =[];
for(i in aData[1]){
var item={};
item.name = aData[1][i];
item.id = "1";
aNewData[i]=item;
}
var aNewData = [];
for (var i = 0; i < aData[1].length; i++) {
aNewData.push({
"name": aData[1][i],
"id": 20 + i
});
}
var sourceData = ["API","Apiales","Apiaceae","Apia"];
var transformed = sourceData.reduce(function(result, name, index) {
return result.concat({
name: name,
id: 20 + index
});
}, []);