【问题标题】:How to iterate an array containing more than one child array in typescript如何在打字稿中迭代包含多个子数组的数组
【发布时间】:2020-02-07 14:33:44
【问题描述】:

对不起,我在 stackoverflow 中遇到了类似的问题并实现了一些但没有得到我的确切输出。
我是 Angular 7 和打字稿的新手。

我有一个可能包含多个数组的数组。这个数组是在运行时出现的,所以我不知道在一个父数组中会有多少子数组。

例如说我有一个数组:

uniqueValues[]= [[MODERN TRADE,3959], [TRADITIONAL TRADE,2303], [ALL OTHER,1183]]

我想要这样的输出:
现代贸易
3959
传统贸易
2303
所有其他
1183

我做了什么:

getUniqueValues(name){
    this.temps.columns.forEach(element => {
      if(element.name.toUpperCase() === name.toUpperCase()){

        // it is successfully populating as you can see i have displayed it in console
        this.uniqueValues= element.stats.frequencyDistribution;

        // so the above array looks like the array defined in the starting of this post
        console.log(this.uniqueValues);
      }
      });

      for(let i = 0; i < this.uniqueValues.length; i++){
        let childArray = this.uniqueValues[i];

        for(let j = 0; j < childArray.length; j++){
          console.log(childArray[j]);
        }
      }
  }

但它显示的输出如下:
[,

O
D
电子
R
N

T
R
一个
D
电子
,
3
9
5
9

谁能告诉我路径?

【问题讨论】:

  • uniqueValues[]= [[MODERN TRADE,3959], [TRADITIONAL TRADE,2303], [ALL OTHER,1183]] 语法无效,很遗憾...
  • 这个输出表明childArray 实际上是一个字符串。你可能有["[MODERN TRADE,3959]", "[TRADITIONAL TRADE,2303]", "[ALL OTHER,1183]"]
  • @mplungjan 我写它是为了显示我们得到的数组在运行时所以值成功填充 iuniqueValues[]
  • @mplungjan 当然,如果那是代码,则代码不会运行,但关键是我们不知道实际的代码是什么。我们无法调试应用程序的无效表示。
  • //it is successfully populating as you can see i have displayed it in consolethis.uniqueValues= element.stats.frequencyDistribution; 覆盖 this.uniqueValues 每次迭代。请证明this.uniqueValues实际上包含。

标签: javascript typescript angular7


【解决方案1】:

使用forEach -

uniqueValues.forEach(function (child) {
  child.forEach(function (childChild) {  
    console.log(childChild);
  });  
});

【讨论】:

    【解决方案2】:

    对于 ES6 和更具可读性的功能解决方案:

    const myData = [['MODERN TRADE',3959], ['TRADITIONAL TRADE',2303], ['ALL OTHER',1183]];
    
    const processedData = myData.reduce((output, curr) => {
      const [name, value] = curr;
      output += `${name}\n${value}\n`;
      return output;
    }, '');
    

    因为 tsc 3.6.3 实际上并没有推断元组类型,所以公平地说,它是一个模棱两可的类型,应该是 [string, number],而是分配数组类型 union (string | number)[],您可以显式键入您的数据标识符是:

    const myData: Array<[string, number]> = [['MODERN TRADE',3959], ['TRADITIONAL TRADE',2303], ['ALL OTHER',1183]];
    

    请注意,TypeScript 中的每个子元素都是 Tuple 类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-22
      • 2019-10-07
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 2020-12-04
      相关资源
      最近更新 更多