1

您好,我正在尝试在使用 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 

我的搜索数组的函数的实现有问题吗?

4

1 回答 1

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).

于 2016-06-01T20:08:08.457 回答