【问题标题】:Combining two arrays side by side in Angular 7在Angular 7中并排组合两个数组
【发布时间】:2019-06-06 02:30:41
【问题描述】:

要并排组合两个数组,我遵循以下过程,但我得到了

无法设置未定义的属性“帐户”。

这是我的代码

    acs = [
    {
        "account": "Cash In Hand",
        "liabilities": 0,
        "assets": 8031597
    },
    {
        "account": "Tax Acs",
        "liabilities": 988363.72,
        "assets": 0.98
    },
    {
        "account": "Sundry Debtor",
        "liabilities": 0,
        "assets": 551
    },
    {
        "account": "Sundry Creditor",
        "liabilities": 0,
        "assets": 0
    }
];

acd: any;
acc: any;
newacc: any;

constructor() { }

ngOnInit() {
    this.acd = this.acs.filter(f => f.liabilities !== 0);
    this.acc = this.acs.filter(f => f.assets !== 0);

    const bigger = this.acd.length > this.acc.length ? this.acd.length : this.acc.length;

    this.newacc = [];
    for (let i = 0; i < bigger; i++) {
      if (this.acd.length > i) {
        this.newacc[i].account = this.acd[i].account;
        this.newacc[i].liabilities = this.acd[i].liabilities;
      }
      if (this.acc.length > i) {
        this.newacc[i].accounts = this.acc[i].account;
        this.newacc[i].assets = this.acc[i].assets;
      }
    }
  }

如果我像这样添加this.newacc = [{}]; 我会得到第二个if 的相同错误,即this.newacc[i].accounts

我在这里做错了什么?或者有没有最简单的方法来并排组合两个数组?这两个数组在数组长度上是独立的,不带任何join。

【问题讨论】:

    标签: javascript angular typescript angular7


    【解决方案1】:

    您应该使用push 方法。问题是您正在使用 C++ 之类的语法添加元素。

     this.newacc[i].account = this.acd[i].account;
    

    正如我前面提到的,您可以通过传递所需的 object 作为参数来使用push 方法。

    newacc.push({account:acd[i].account, liabilities : acd[i].liabilities });
    

    acs = [ { "account": "Cash In Hand", "liabilities": 0, "assets": 8031597 }, { "account": "Tax Acs", "liabilities": 988363.72, "assets": 0.98 }, { "account": "Sundry Debtor", "liabilities": 0, "assets": 551 }, { "account": "Sundry Creditor", "liabilities": 0, "assets": 0 } ];
    
    acd = acs.filter(f => f.liabilities !== 0);
    acc = acs.filter(f => f.assets !== 0);
    
    const bigger = acd.length > acc.length ? acd.length : acc.length, newacc = [];
    for (let i = 0; i < bigger; i++) {
      if (acd.length > i)
        newacc.push({account:acd[i].account, liabilities : acd[i].liabilities });
      if (acc.length > i)
        newacc.push({account:acc[i].account, assets : acc[i].assets });
    }
    console.log(newacc);

    【讨论】:

    • 这样会合并数组吗?如果是其他的东西,你能简要解释一下吗?
    • 我已经搜索到 php 中存在一些差异,但 js 中有什么差异?希望你不要因为学习而介意。
    • 你能用简单的话解释一下吗?我只想知道核心差异。
    【解决方案2】:

    您的问题纯粹是 Typescript 问题,没有任何角度问题。

    这是对部分代码的修复,其余部分我想你可以弄清楚:

    interface accnt {
      account: string;
      liabilities: number;
      assets: number;
    }
    
    let acs = [
        {
            "account": "Cash In Hand",
            "liabilities": 0,
            "assets": 8031597
        },
        {
            "account": "Tax Acs",
            "liabilities": 988363.72,
            "assets": 0.98
        },
        {
            "account": "Sundry Debtor",
            "liabilities": 0,
            "assets": 551
        },
        {
            "account": "Sundry Creditor",
            "liabilities": 0,
            "assets": 0
        }
    ];
    
    let acd: accnt[] = new Array(4);
    let acc: accnt[] = new Array(4);
    let newacc: accnt[] = new Array(4);
    
    this.acd = this.acs.filter(f => f.liabilities !== 0);
    this.acc = this.acs.filter(f => f.assets !== 0);
    alert(JSON.stringify(this.acd));
    alert(JSON.stringify(this.acc));
    alert(JSON.stringify(this.newacc));
    
    const bigger = this.acd.length > this.acc.length ? this.acd.length : this.acc.length;
    
    for (let i = 0; i < bigger; i++) {
      if (this.acd.length > i) {
        this.newacc[i] =
          {
            account: this.acd[i].account,
            liabilities: this.acd[i].liabilities
          }
      }
      /*if (this.acc.length > i) {
        this.newacc[i].accounts = this.acc[i].account;
        this.newacc[i].assets = this.acc[i].assets;
      }*/
    }
    
    alert(JSON.stringify(this.newacc));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      相关资源
      最近更新 更多