通过解析Json附加到数组
Append to an array by Parsing Json
试图从localStorage
中检索Json字符串,并在其上附加一个新菜。它不能正常工作,有人能帮我吗?我正在使用TypeScript
。
interface Dish {
id: number;
name: string;
desc: string;
price: number;
};
export class BasketService {
private BASKET: string = 'basket';
log(dish: Dish) {
var dishList: Dish = [];
if (!localStorage.getItem(this.BASKET)) {
dishList.push(dish); //push the first dish (if local storage is empty)
}
//Append an injected dish to the existing local storage.
dishList.push(JSON.parse(localStorage.getItem(this.BASKET)));
dishList.push(dish);
localStorage.setItem(this.BASKET, JSON.stringify(dishList));
}
}
预期行为:一旦Dish被很好地附加,那么它应该被存储在localStorage中以供进一步操作。
var array1 = [1, 2, 3];
var array2 = [4, 5, 6];
array1.push(array2);//[1, 2, 3, [4, 5, 6]]
在javascript中有一个函数Array.prototype.concat
。应该看起来像array1 = array1.concat(array2)
。注意,concat
不会修改它被调用的数组,而是返回新的数组。
此外,在您发布的空localStorage
的代码中,dish
添加了两次我会把它做成下面这样:
var json = localStorage.getItem(this.BASKET);
if (!json) {
dishList = [dish];
} else {
dishList = JSON.parse(json);
dishList.push(dish);
}
localStorage.setItem(this.BASKET, JSON.stringify(dishList));
在这里,在执行JSON.parse(localStorage.getItem)时,我们通常会得到一个JSON对象。它的值将是一个类似数组的例子。
var dish = [];
var test = JSON.parse(localStorage.getItem("dummy"));
// test = {a : ['aa','bb','cc']}
dish = test.a;
dish.push('dd');
test.a = JSON.stringify(dish);
localStorage.setItem("dummy",test);
我们需要遵循这一点。
但我认为您直接将对象推到Dishlist中,这可能会导致问题。
这个例子是纯javascript,因为我不太了解Typescript。希望这对你有帮助。
相关文章:
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)
- 使用 Javascript 将行添加到数组 json
- PHP数组JSON编码和该对象在ExtJs中解码
- 数组json转换为数组json
- 将Blob文本转换为Javascript中的数组/JSON对象
- 如何合并这些数组/json 对象
- 尝试从数组 JSON 键中删除引号
- JavaScript 中的数组 JSON
- 在数组 JSON 格式的 JavaScript 变量末尾添加新地址
- 如何访问这个Javascript数组(JSON对象?)
- rails传递记录数组(JSON)
- 按值提取对象/数组json vs数组
- 获取具有子数组json值的数组的值
- Object对象数组Json.字符串数组的字符串化
- 如何在Ext js 4.1中过滤数组json
- PHP -多维数组Json
- 正在分析数组Json以选择Tag
- 试图将字符串数据转换为数值数据,将数据放入数组的数组(Json)
- 从数组json、javascript中的specf值中删除引号
- 使用JavaScript或jQuery读取数组JSON