迭代Typescript中的对象数组

Sus*_*vam 37 javascript typescript angular

我需要以角度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');
    }
  }
Run Code Online (Sandbox Code Playgroud)

}); }

我需要将prod_desc长度限制为(例如)10个字符,同时替换我使用过的:

例如:

this.product_desc.substring(0,10)
Run Code Online (Sandbox Code Playgroud)

Wer*_*son 64

您可以使用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);
});
Run Code Online (Sandbox Code Playgroud)

你的版本没有错.它应该看起来更像这样:

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


Hub*_*her 9

在Typescript和ES6中,您还可以用于:

for (var product of products) {
     console.log(product.product_desc)
}
Run Code Online (Sandbox Code Playgroud)

它将转码为javascript:

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

  • 如果您收到“type 'string'”错误,请确保您使用的是“of”而不是“in”……例如,使用“for (var x of arr)”而不是这个`for (var x in arr)`。 (18认同)
  • 这个解决方案对我不起作用。我收到一条 TS 错误,指出“类型‘string’上不存在属性‘product_desc’”。看来“product”变量是字符串类型,无法将其定义为产品? (8认同)
  • prob 应该让而不是 var。 (3认同)