Dav*_*ias 4 javascript arrays object populate
这类似于我的实际问题,但我觉得说明我需要解决的问题,而不会使事情复杂化.
我需要通过迭代2d数组来创建一个对象数组.2d数组看起来像下面的"sampleArray".
let sampleArray = [ 
  ["open",2], 
  ["high",3], 
  ["low",5], 
  ["close", 10], 
  ["volume", 20], 
  ["open",20], 
  ["high",30], 
  ["low",50], 
  ["close", 100], 
  ["volume", 21],
  ["open",21], 
  ["high",33], 
  ["low",51], 
  ["close", 1], 
  ["volume", 2],
  ["open",7], 
  ["high",8], 
  ["low",5], 
  ["close", 11], 
  ["volume", 22]
 ];
我目前正在格式化一组特别丑陋的API数据,并将数据展平为二维数组.我现在需要的是将这些值放入一个包含5个对象的数组中,其中每个对象的数据属性由具有该特定标签的所有值填充.
newObject = [
    {
     data: [2,20,21, ...]
     label: "open"  
    }, 
    {
     data: [3,50, ...]
     label: "high"
    }, 
    {
     data: [etc...]
     label: "low"  
    }, 
    {
     data: [etc...]
     label: "close"  
     }, 
    {
     data: [etc...]
     label: "volume"  
     }
]
我大约需要3个小时才能完成这项工作,并且觉得我这一切都错了,我不断得到一个错误,即newArray [i] ["label"]未定义,我明白为什么会发生这种情况(没有对象)该属性存在YET,我只是不确定如何表达这个想法(如果具有该标签的对象尚不存在,创建它并将该匹配值添加到它的value属性)在javascript中.
function makeArray(array) {
  let newArray = [];
  for(let i = 0; i <= array.length; i++){
    if(newArray[i]["label"] !== array[i][0]){
      newArray.push({
        "label": array[i][0],
        "value": array[i][1]
      })
    }    
    else{
      newArray.push({
        "value": array[i][1]
      })
    }
  }
return newArray;
}
let test = makeArray(sampleArray);
console.log(test);
很抱歉这篇长篇文章,我整天都在讨论这个噩梦API,觉得我现在只是跑到位.我更倾向于在正确的方向上找到一个点,而不是直接的答案.我要打瞌睡,看看有人能在早上给我一点透视.谢谢!
您可以使用 reduce 
let sampleArray = [
  ["open", 2],
  ["high", 3],
  ["low", 5],
  ["close", 10],
  ["volume", 20],
  ["open", 20],
  ["high", 30],
  ["low", 50],
  ["close", 100],
  ["volume", 21],
  ["open", 21],
  ["high", 33],
  ["low", 51],
  ["close", 1],
  ["volume", 2],
  ["open", 7],
  ["high", 8],
  ["low", 5],
  ["close", 11],
  ["volume", 22]
];
let newObject = Object.values(sampleArray.reduce((c, [n, v]) => {
  c[n] = c[n] || {label: n,data: []};
  c[n].data.push(v);
  return c;
}, {}));
console.log(newObject);| 归档时间: | 
 | 
| 查看次数: | 123 次 | 
| 最近记录: |