您好我在使用Angular2和Typescript时尝试删除数组中的某个索引。我想从值中检索索引。
我的数组正常声明...
RightList = [
'Fourth property',
'Fifth property',
'Sixth property',
]
我从设置删除功能的基本前提开始。
removeSel(llist: ListComponent, rlist:ListComponent){
this.selectedllist = llist;
console.log(JSON.stringify(this.selectedllist)); // what is to be searched turned into a string so that it may actually be used
我的JSON.Stringify的console.log告诉我,我将尝试删除的值是"第六个属性"。但是当我尝试使用以下代码在我的数组中查找此值时。它返回-1,这意味着我的值在数组中找不到。
var rightDel = this.RightList.indexOf((JSON.stringify(this.selectedllist))); // -1 is not found 1 = found
console.log(rightDel);
在我输出到控制台的时候,它确实返回了要搜索但没有找到数组中项目的项目
CONSOLE OUTPUT:
"Sixth property" // Item to be searched for
-1 // not found
在我的函数实现中搜索数组有什么问题吗?
答案 0 :(得分:1)
当然indexOf在数组中找不到你的项目,因为
JSON.stringify(this.selectedllist) !== this.selectedllist
这是因为JSON字符串化字符串在文字周围编码引号,原始字符串没有。这很容易测试:
var a = 'test';
console.log( JSON.stringify(a), a, JSON.stringify(a) === a )
删除JSON.stringify
,它应该有效。通常,要将某些内容转换为String类型,您应该使用其.toString()
方法,或者只是将此内容包装到String(something)
中。