我正在尝试从数组中删除单个对象,我该怎么做?
我尝试使用this.storage.remove('details')
作为离子指示here,但它将删除所有数组,这是我当前的尝试:
它给我一个错误“提供的参数与呼叫目标的任何签名都不匹配”
private details: {name: string, fav: string}[] = [];
hapusDetail(val) {
let test: string[] = [val]
this.storage.remove(toString(test)) //really lost here
//console.log(val)
}
> Cordova CLI: 6.5.0
> Ionic Framework Version: 3.1.1
> Ionic CLI Version: 2.2.3
> Ionic App Lib Version: 2.2.1
> Ionic App Scripts Version: 1.3.6
> ios-deploy version: Not installed
> ios-sim version: Not installed
> OS: Linux 4.8
> Node Version: v6.10.2
> Xcode version: Not installed
val
包含要删除的所需对象,例如{name:john,fav:apple}
基本上我需要的是从包含{name:bob,fav:banana},{name:ed,fav:grape},{name:john,fav}的数组中删除{name:john,fav:apple} :apple}
提前谢谢
答案 0 :(得分:1)
您获得的错误是因为您正在使用错误的属性/类型触发命令。我的猜测是删除命令。我不知道你是否有一个名为toString()
的函数,但我的猜测就是这个问题。尝试将其设为'UserData'
之类的基本字符串,并查看错误是否仍然显示。
但这不会解决您的实际问题,
存储与用户设备上保存的数据集特别相关。如果要从数组中删除特定项(暂时),您需要先弄清楚它的位置,然后将其从数组中删除。
示例:
let myArray = ['apples', 'oranges', 'bananas'];
// find oranges
let position = myArray.indexOf('oranges');
//splice it out
myArray.splice(position, 1);
如果你想从本地存储的数据中删除它,你只需要在整个阵列上执行你的操作,然后存储它不要删除它。当您使用Ionic存储对象时,您可以为它们命名,您的代码实际上看起来像是要将值转换为字符串。
让我分解一下:
// Get the saved stuff, Ionic will convert it for you
let userData = this.storage.get('UserData');
// Lets say favorite fruit is a value of the user data.
let fruit = userData.fruit; // ['apples', 'oranges', 'bananas']
// find oranges
let position = myArray.indexOf('oranges');
//splice it out, remember fruit is a shorthand reference to userData.fruit
fruit.splice(position, 1);
// Now, the data we save/load is called 'UserData' it has nothing to do with the data itself
this.storage.set('UserData', userData);
希望有所帮助..