如何从角度4的数组中获取值

时间:2018-08-06 09:22:21

标签: javascript angular

我有3个数组:

 A = [AC,DC];
 B = [3,4,4,4];
 c = [1,2,2,2];

我需要创建一个循环以从这些数组中检索值并以以下格式显示:

{
  name:AC
  value:{
         one:3 // from B
         two :1, // from C
         },
         {
           one:4, // from B
           two:2   // from C
         }
},
{
       name:DC
        value:{
            one:3 // from B
            two :1, // from C
           },
           {
            one:4, // from B
            two:2   // from C
          }
}
}

数组在变化,不一致。

this.A.forEach((item,index)=>{
      this.B.forEach((item1,index2)=>{
        this.multi.push(
          {
            "names":item,
            "value":[
              {
                "one":item1,
                "two":this.c[index2]
              }
          ]
        })
        })

我使用此for循环,但是我没有得到正确的格式,我的代码有错误吗?有什么需要改变的吗?任何帮助将不胜感激。而不是for-each循环。我使用每个循环来获取所有值,因为数组中的值是变化的。还有一点,第一个数组的长度与第二个和第三个数组的长度不同,但是数组2和数组3相同。

3 个答案:

答案 0 :(得分:0)

尝试:

this.A.forEach((item,index)=>{
    let values:{}[] =[];
    for(let i=0 ; i<Math.min(this.B.length , this.C.length) ; i++){
      values.push(
        {
          "one":this.B[i],
          "two":this.C[i]
        }
      )
    }
    this.multi.push(
          {
            "names":item,
            "value":values
        })
  });
  console.log(this.multi)   
  }

工作demo

答案 1 :(得分:0)

这是一个简单的解决方案:

let A = ["AC","DC"];
let B = [3,4,4,4];
let C = [1,2,2,2];

let result = {};
A.forEach((element) => {
    result[element] = {
        name: element,
        value: B.map((_, index) => {
            return {
                one: B[index],
                two: C[index]
            };
        })
    };
});

console.log(result);

答案 2 :(得分:0)

使用此

let A = ["AC","DC"];
let B = [3,4,4,4].filter((v,i) => [3,4,4,4].indexOf(v) == i);
let C = [1,2,2,2].filter((v,i) => [1,2,2,2].indexOf(v) == i);

let E = A.map(item=>{
  return {'name':item,
   'value':B.map((item,index)=>{
  return {'one':B[index],'two':C[index]}
   })
 } 
})
console.log(E)