Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 如何将数组转换为pivot数组_Javascript_Arrays_Json_Sorting_Pivot - Fatal编程技术网

Javascript 如何将数组转换为pivot数组

Javascript 如何将数组转换为pivot数组,javascript,arrays,json,sorting,pivot,Javascript,Arrays,Json,Sorting,Pivot,您好,我正在尝试基于以下数据创建透视数组: var data = [ {model_num : "ABC", revision : "AA", value : 31.25, treatment : 'Pressure' }, {model_num : "ABC", revision : "AA", value : 31.25, treatment : 'Gas' }, {model_num : "ABC", revision : "AA", value : 33.12, tr

您好,我正在尝试基于以下数据创建透视数组:

    var data = [
  {model_num : "ABC", revision : "AA", value : 31.25, treatment : 'Pressure' },
  {model_num : "ABC", revision : "AA", value : 31.25, treatment : 'Gas' },
  {model_num : "ABC", revision : "AA", value : 33.12, treatment : 'Temp' },
  {model_num : "ABC", revision : "AA", value : 25.87, treatment : 'Current' },
  {model_num : "ABC", revision : "AB", value : 26.63, treatment : 'Pressure' },
  {model_num : "ABC", revision : "AB", value : 26.00, treatment : 'Gas' },
  {model_num : "ABC", revision : "AB", value : 23.75, treatment : 'Temp' }
];
我希望最终结果如下所示:

var data=[{model_num : "ABC", revision : "AA",  "Pressure":31.25, "Gas":31.25, "Temp": 33.12,"Current":25.87 },{model_num : "ABC", revision : "AB", "Gas":26.00,"Temp":23.75}]
我有以下代码:

var arr2d2 = []; //new array that is going to contain the merged values.
    //  console.log(arr2d2.length);
    var arr2d2test = [];
    var counter=0;
    data.map(function(element){
        //console.log(counter); // this will run 7 times the size of data 
        var outerElement = element; //element is equivalent to  one array for example: {model_num : "ABC", revision : "AA", value : 31.25, treatment : 'Pressure' } all 7 in this example
        //console.log(element);
    var found = false; //set initially to false. If not found add element to the new array.
    //console.log(arr2d2.length);
    for (var i = 0; i < arr2d2.length; i++)
    {   
        //console.log(i);
        //console.log(arr2d2[i].model_num);
        if (arr2d2[i].model_num == outerElement.model_num && arr2d2[i].revision == outerElement.revision)
        {
            arr2d2[i][outerElement['treatment']] = outerElement['value'];   
            found = arr2d2[i]; // save the element.
        //   console.log('found variable' + JSON.stringify(found));

           break; //stop the loop
        }
    };

   if (found)
    {
        //arr2d2test.push(found.model_num);//          console.log(found.model_num);
       if (found.value != outerElement.value)
       {
         // console.log('TRUE');
          found.value.push(outerElement.value); //push the age to the new value.
       }
    }
    else
    {
      outerElement.value = [outerElement.value]; //convert age to an array, like you specified.
    //  console.log(outerElement);
      arr2d2.push(outerElement); //not found yet. push element;
    }  
 counter++;
});
//console.log(arr2d2test);
console.log(arr2d2);
console.log(JSON.stringify(arr2d2));

这很接近,但不完全是我需要的。任何帮助都将不胜感激

您可以使用
forEach
循环和可选的
thisArg
参数来获得所需的结果

var数据=[
{型号编号:“ABC”,版本:“AA”,数值:31.25,处理:'压力'},
{型号编号:“ABC”,修订号:“AA”,数值:31.25,处理方式:“气体”},
{型号编号:“ABC”,版本:“AA”,数值:33.12,处理:'Temp'},
{模型编号:“ABC”,修订:“AA”,数值:25.87,治疗:'当前'},
{型号编号:“ABC”,版本:“AB”,数值:26.63,治疗:“压力”},
{型号编号:“ABC”,修订版:“AB”,数值:26.00,处理:'气体'},
{型号编号:“ABC”,版本:“AB”,数值:23.75,治疗:'Temp'}
];
var结果=[];
data.forEach(函数(e){
变量a=e.model_num+“|”+e.revision;
如果(!此[a]){
这个[a]={model_num:e.model_num,revision:e.revision}
结果.推(这个[a]);
}
此[a][e.处理]=e.值;
}, {});
document.body.innerHTML=''+JSON.stringify(结果0,4)+''
[{"model_num":"ABC","revision":"AA","value":[31.25,33.12,25.87],"treatment":"Pressure","Gas":31.25,"Temp":33.12,"Current":25.87},{"model_num":"ABC","revision":"AB","value":[26.63,26,23.75],"treatment":"Pressure","Gas":26,"Temp":23.75}]