web-dev-qa-db-ja.com

オブジェクトの配列でと一致するすべての要素を検索します

オブジェクトの配列があります

このように配列内を検索しています

let arr = [
    { name:"string 1", arrayWithvalue:"1,2", other: "that" },
    { name:"string 2", arrayWithvalue:"2", other: "that" },
    { name:"string 2", arrayWithvalue:"2,3", other: "that" },
    { name:"string 2", arrayWithvalue:"4,5", other: "that" },
    { name:"string 2", arrayWithvalue:"4", other: "that" },
];
var item  = arr.find(item => item.arrayWithvalue === '4'); 
console.log(item)

これは、この2行の配列を返す必要があります

{ name:"string 2", arrayWithvalue:"4,5", other: "that" },
{ name:"string 2", arrayWithvalue:"4", other: "that" }

最初に一致した1行のみを返します。

{ name:"string 2", arrayWithvalue:"4", other: "that" }

これには外部ライブラリを使用したくありません。条件に一致するすべての一致を返すにはどうすればよいですか?

6
ankur

filterの代わりにfindメソッドを使用する必要があります。これは、渡された関数から真の値を返すメンバーのみを含む新しい配列を返します。

1
Richard Millen

Array.prototype.find()は、 MDN仕様に従って提供された配列の最初の要素の値を返しますテスト機能

代わりに使用したいのは、テスト関数に一致するすべてのインスタンスの配列を返す filter function.filter()です。

1
Adam

配列フィルター法を使用します。お気に入り

arr.filter(res => res.arrayWithvalue.indexOf('4') !== -1);
1
Abinash Ghosh