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 は、削除しようとしている値が「6 番目のプロパティ」であることを示しています。ただし、次のコードを使用して配列でこの値を検索しようとすると。-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 に答える