循环访问 Typescript 中的对象数组

2022-08-30 05:32:38

我需要迭代角度 2 中的对象数组,并限制对象中特定键的字符串长度显示。

this.productService.loadAllProducts(product).subscribe(data => {
      if (this.authService.checkActiveSession(data)) {
        if (data.success) {
         //console.log(this.product_desc.substring(0,2))
             for(let i=0;i<data.products.length ;i++){  //How to properly iterate here!!
             console.log(data.products[0].product_desc)
          }
          this.source.load(data.products);
         } else {
          console.log('Not binded');
        }
      }
    });
  } 

我需要将prod_desc长度限制为(比如)10个字符,同时显示我使用过的内容:

例如:

this.product_desc.substring(0,10)

答案 1

您可以将内置函数用于数组。forEach

喜欢这个:

//this sets all product descriptions to a max length of 10 characters
data.products.forEach( (element) => {
    element.product_desc = element.product_desc.substring(0,10);
});

不过,您的版本没有错。它应该看起来像这样:

for(let i=0; i<data.products.length; i++){
    console.log(data.products[i].product_desc); //use i instead of 0
}

答案 2

在 Typescript 和 ES6 中,您也可以使用 ..之:

for (var product of products) {
     console.log(product.product_desc)
}

这将被转码为javascript:

for (var _i = 0, products_1 = products; _i < products_1.length; _i++) {
    var product = products_1[_i];
    console.log(product.product_desc);
}