Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.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中的索引值_Javascript_Arrays_Json_Anychart - Fatal编程技术网

根据项目';将多个阵列转换为不同的阵列;JavaScript中的索引值

根据项目';将多个阵列转换为不同的阵列;JavaScript中的索引值,javascript,arrays,json,anychart,Javascript,Arrays,Json,Anychart,我目前正在处理返回的JSON数据。总之,我有多个数组,每个数组都有一个基于JSON对象中特定值的键,这些数组都放在JavaScript对象中 我需要做的是遍历对象中的每个数组,并根据其索引值将每个项放置在不同的数组中。因此,例如,obj(名称[0])需要移植到一个数组中,比如说,array_0。其他数组需要以相同的方式排序。因此,obj(不同的_名称[0])也需要放在数组_0中。所有其他值也需要这样做 要说明结构,请执行以下操作: Obj { array0: [0]AName0

我目前正在处理返回的JSON数据。总之,我有多个数组,每个数组都有一个基于JSON对象中特定值的键,这些数组都放在JavaScript对象中

我需要做的是遍历对象中的每个数组,并根据其索引值将每个项放置在不同的数组中。因此,例如,obj(名称[0])需要移植到一个数组中,比如说,array_0。其他数组需要以相同的方式排序。因此,obj(不同的_名称[0])也需要放在数组_0中。所有其他值也需要这样做

要说明结构,请执行以下操作:

Obj {
   array0:
      [0]AName0
      [1]AName1
      [2]AName2
      [3]AName3
   array1:
      [0]BName0
      [1]BName1
      [2]Bname2
}
我需要AName0与BName0位于同一数组中,AName1与BName1位于同一数组中,依此类推。我还需要动态地创建这些数组,因为每次运行时数据都会不同(这意味着数组中的数组和项目数量不同)

我试图实现的是动态创建一个图表。图表将有多个数据集,我需要根据传递回来的数据动态创建每个数据集

下面是一个JSFIDLE,它显示了图表的基本结构以及我试图完成的任务:

以下是我如何将数据放入阵列中:

for (var i = 0; i < data.Details.length; ++i) {
                obj[data.Details[i].Name].push("{low: " + data.Details[i].GeolFrom + ", " +
                    "high: " + data.Details[i].GeolTo + ", " +
                    "field: " + data.Details[i].Name + "}, ");

            }
for(变量i=0;i
以下是我所做的

首先创建示例对象:

var obj = { array0: ['AName0', 'AName1', 'AName2', 'AName3'], array1: ['BName0', 'BName1', 'BName2']};
接下来,我创建了一个函数(朴素的方法),它接受对象并返回一个带有新数组的对象

function transform(obj) {
  var keys = Object.keys(obj);
  var newObj = {};
  for (var k = 0; k < keys.length; k++) {
    var arr = obj[keys[k]];
    for (var i = 0; i < arr.length; i++) {
      var el = arr[i];
      if (el) {
        if (!newObj['array_' + i]) newObj['array_' + i] = [];
        newObj['array_' + i].push(el);
      }
    }
  }
  return newObj;
}
返回对象中的预期结果

{ array_0: [ 'AName0', 'BName0' ],
  array_1: [ 'BName1' ],
  array_2: [ 'AName2', 'BName2' ],
  array_3: [ 'AName3' ] }

现在在手机上,所以我的答案无法详细说明,但你能不能利用Array的indexOf()方法来解决这个问题?你已经为我节省了好几个小时的工作时间。这样做效果很好,解决方案简单而优雅。我非常感谢你的回答!
{ array_0: [ 'AName0', 'BName0' ],
  array_1: [ 'BName1' ],
  array_2: [ 'AName2', 'BName2' ],
  array_3: [ 'AName3' ] }