Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于重新排列JSON对象的JQuery数组_Javascript_Jquery_Arrays_Object - Fatal编程技术网

Javascript 用于重新排列JSON对象的JQuery数组

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

我想转换这个javascript数组

[ "Data", [ "API", "Apiales", "Apiaceae", "Apia", ] ]
身份证是从哪里来的?测试以下脚本,您的数组位于
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循环基本相同的功能,但更以数据为中心

你可以这样想:

  • 保存源数据(包含所有“api*”字符串的数组)

  • 创建一个新的结果数组
    []
    (作为第二个参数传递给
    reduce
    ),该数组应作为下一个结果返回

  • 将一个未命名函数传递给
    reduce
    ,每次调用该函数时,将使用3个参数调用该函数,即
    result
    ,它是您最近创建的数组,
    name
    这些“api*”字符串的值,以及
    index
    ,它是原始数组中这些字符串的索引

  • 连续查看每个“api*”字符串,并将包含所需数据的新对象放入其中。由于
    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
      });
    }, []);