【问题标题】:How to get values from an array in angular 4如何从角度4的数组中获取值
【发布时间】:2018-08-06 09:22:20
【问题描述】:

我有 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 将是相同的。

【问题讨论】:

  • B 和 C 各有 4 个元素,为什么结果只有 2 次出现 `{one: , two: }'?

标签: javascript angular


【解决方案1】:

使用这个

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)

【讨论】:

    【解决方案2】:

    试试:

    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

    【讨论】:

      【解决方案3】:

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

      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);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-03
        • 1970-01-01
        • 2018-04-15
        • 2019-03-04
        • 1970-01-01
        • 2020-02-29
        相关资源
        最近更新 更多