【发布时间】:2018-07-31 08:49:45
【问题描述】:
我是 Angular 5 的新手,我正在制作一个简单的购物车来学习 Angular 5。我陷入了一种困惑,即如何检查购物车数据中的重复条目。实际上问题是我很困惑我应该将对象存储在数组中还是将数组存储在对象中以存储数据。
这就是我正在做的 主页组件
import { Component, OnInit } from '@angular/core';
import { DataService } from '../data.service';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
items: Array<object> = [];
total_items:Number = 0;
cart = {};
broadcast_obj = {items:[],totals:{}};
total_sum:Number = 0.0;
htmlToAdd:String = '';
constructor(private _data: DataService) { }
ngOnInit() {
//this.items_count = this.cart.length;
this._data.cast.subscribe(res => this.broadcast_obj = res);
this._data.changeCart(this.broadcast_obj);
}
additem(id,itemText,amount){
this.total_items = 10;
this.total_sum += amount;
this.cart = {id:id, name: itemText, price: amount,quantity:1};
if(this.items.length>0){
this.items.find(x => x.id == 3);//error id does not exist on type object
}
this.items.push(this.cart);
this.broadcast_obj.items = this.items;
this.broadcast_obj.totals = {total_items:this.total_items,total_sum:this.total_sum};
console.log(this.broadcast_obj)
//this._data.changeCart(this.broadcast_obj);
}
}
我将数据存储在 2 个对象中并将它们推入数组 1- {id:id, name: itemText, price: amount,quantity:1}; 2- {total_items:this.total_items,total_sum:this.total_sum};
现在我想检查 id 是否存在然后增加数量,但我很困惑我做得对吗,因为我在数组对象中搜索 id 并且它显示错误,如注释中所示(id 在类型对象上不存在)。
我也在想,如果我将对象存储在其 id 的数组索引中,例如 如果 item id=199 然后我将对象存储在数组 index[199] 中,以便我可以快速搜索数组中的任何项目。
从搜索的角度来看,我仍然不知道哪种方法更好,或者两者都是错误的。
请解决我的错误,并帮助我以正确的结构存储购物车数据,以便我可以快速搜索商品并将购物车数据传递到 observable 中。
谢谢。
【问题讨论】:
标签: javascript jquery angular typescript