Angular 4 - 替换ArrayList的键值

问题描述 投票:0回答:1

我有以下json数据,它被读入arrayList并保存在local-storage

[
    {
        "id": 1,
        "name": "Albany",
        "manufacture": "Albany Superior Low Gi Sliced Brown Seed Bread 700g",
        "price": 15.49,
        "category": "Food",
        "type": "Breads",
        "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgA..."
    },
    {
        "id": 2,
        "name": "Blue Ribbon",
        "manufacture": "Blue Ribbon Brown Plus Low Gi Bread 700g",
        "price": 13.99,
        "category": "Food",
        "type": "Breads",
        "image": "data:image/octet-stream;base64,/9j/4AAQSkZJRgABA..."
    },
    {...},
    {...},
    ...
]

然后我写了一个类,它将从本地存储中检索这些数据,我过滤了特定的产品类型。课程如下:

export class MilkCreamComponent implements OnInit {

  allProducts: Array<Product> = [];
  quantity: number = 1;
  resultArray:any;
  milkProducts =[]
  newMilkProducts = [];

  constructor( private prod: ProductService, public _DomSanitizer: DomSanitizer) { }

  ngOnInit() {

    this.allProducts = JSON.parse(localStorage.getItem('product-data') );
    //console.log( JSON.stringify( this.allProducts ) );

    var productMilk = this.allProducts.filter(item => item.type === 'Milk');
    this.milkProducts = productMilk;
    //console.log( this.milkProducts );

      for (var i=0; i < this.milkProducts.length / 4; i++) {
        var imageString = this.milkProducts[i].image;
        var edittedImageString = imageString.substring(imageString.indexOf(",") + 1 );
        var newImageStringFormat = "data:image/jpeg;base64," + edittedImageString;

        if ( edittedImageString ===  this.milkProducts[i].image.substring(this.milkProducts[i].image.indexOf(",") + 1) ){

          var index = this.milkProducts.indexOf( this.milkProducts[i] );

          if (index !== -1) {
            this.milkProducts.indexOf[index] =  this.milkProducts[i].id, this.milkProducts[i].name, this.milkProducts[i].manufacture,
                                this.milkProducts[i].price, this.milkProducts[i].category, this.milkProducts[i].type, newImageStringFormat;
            console.log (  this.milkProducts );
            }
        }
        else{
          console.log("Images Are Not Equal\nSee milk-cream.component.ts\nSee Image Conversion Codes");
        }
      }
    //console.log( this.newMilkProducts );

  }
}

interface Product {
  id: number;
  name: string;
  manufacture: string;
  price: number;
  category: string;
  type: string;
  image: string;
}

我想要做的是替换键的特定值,然后控制台记录该arrayList。

json angular typescript arraylist
1个回答
1
投票

试试这个:

this.allProducts = JSON.parse(localStorage.getItem('product-data'));

this.allProducts.forEach(function(item) {
  if (item.type === "Milk") {
    var edittedImageString = item.image.substring(item.image.indexOf(",") + 1 );
    item.image = "data:image/jpeg;base64," + edittedImageString;
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.