THay vì bạn lưu 1 mảng product. Thì bạn lưu 1 object. Việc lưu object sẽ lấy ra nhanh hơn là mảng. Với key của object là productId.
{
"1": {
// fields
},
"2": {
// fields
},
...
}
Khi muốn kt 1 product có chưa thì bạn chỉ cần
if (productList[productId]) { productList[productId].quantity += 1 }
else { productList[productId] = product }
Nhưng lưu vậy tui không loop qua nó được. Đơn giản, dùng Object.values(productList) sẽ moi ra hết values của object này
productArr = Object.values(productList)
Ngoài ra việc bạn đang làm là thay đổi giá trị của state thông qua reference
var product = this.state.item; // item mình lấy từ file JSON
product['color'] = this.state.selectedColor;
product['size'] = this.state.selectedSize;
product['quantity'] = this.state.quantity;
Điều này sẽ gây khó khăn cho bạn sau này khi debug nếu gặp lỗi nhé. Và nó cũng là một con bug đang chờ bạn xử lý đó.