如何解决如果使用TypeScript在数组中已经存在键值,如何通过onclick增加键值?
这里我具有onclick函数,该函数从details数组中获取sql_mode
,function func(months) {
let days = months * 30.5; // Average days in a month
let y = 0,m = 0,w = 0;
while (days >= 365) {y++;days -= 365;}
while (days >= 30.5) {m++;days -= 30.5;}
while (days >= 7) {w++;days -= 7;}
let out =
(y ? (`${y} Year` + (y > 1 ? "s " : " ")) : "") +
(m ? (`${m} Month` + (m > 1 ? "s " : " ")) : "") +
(w ? (`${w} Week` + (w > 1 ? "s " : " ")) : "");
console.log(out);
}
func(10);
func(3);
func(1);
func(0.1);
func(0.25);
func(13);
func(14);
func(14.25);
和Product_id
。我正在使用本地存储阵列心愿单存储该值。
现在,我不得不更新本地存储阵列心愿单中的数量, 如果本地存储中已经存在productid,我需要添加数量。
Product_name
谢谢。
解决方法
- 从localStorage获取值并将其解析为对象
var myList = JSON.parse(localStorage.getItem('wishlist')) || [];
- 使用Product_id查找产品
addQuantity(Product_id,passedQuantity) {
let productIndex=myList.findIndex(eachProduct=> eachProduct.Product_id==Product_id);
if(productIndex==-1)
{
//Product does not exist in the array
}
else
{
myList[productIndex].Quantity=passedQuantity;
}
}
- 再次对数组进行字符串化,然后将其保存回localStorage
,
localStorage.setItem('wishlist',JSON.stringify(myList));
仅在项目存在时才增加金额的功能。
在此示例中,通过点击购物车内的+按钮添加金额:
addAmount(Product_id){
let myArray = JSON.parse(localStorage.getItem('wishlist'));
for(let i = 0; i < myArray.length; i++){
if(Product_id == myArray[i].Product_id){
myArray[i].Quantity = parseInt(myArray[i].Quantity) + 1;
localStorage.setItem('wishlist',JSON.stringify(myArray));
}
}
}
如果您要传递数字:
addAmount(Product_id,Quantity){
let myArray= JSON.parse(localStorage.getItem('wishlist'));
for(let i = 0; i < myArray.length; i++){
if(Product_id == myArray[i].Product_id){
myArray[i].Quantity = Quantity;
localStorage.setItem('wishlist',JSON.stringify(myArray));
}
}
}
P.S。对于此类数据,最好使用 Storage 而不是localStorage
。
在本地应用程序上下文中运行时,Storage将优先使用 SQLite,因为它是最稳定且使用最广泛的基于文件的文件之一 数据库,并避免了诸如本地存储之类的某些陷阱 和IndexedDB,例如OS决定以较低的价格清除此类数据 磁盘空间情况。
import { Storage } from '@ionic/storage';
...
constructor(public _storage: Storage){}
...
this._storage.get('wishlist').then((res) => {
for(let i = 0; i < res.length; i++){
if(Product_id == res[i].Product_id){
res[i].Quantity = parseInt(res[i].Quantity) + 1;
//res[i].Quantity = Quantity;
this._storage.set('wishlist',res).then(()=>
console.log(res)
);
}
}
})
,
那不是localStorage
的目的...试试webStorage
。
https://www.w3schools.com/html/html5_webstorage.asp
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。