web-dev-qa-db-ja.com

Immutable.js:プロパティ値を指定して配列内のオブジェクトを見つける方法

Immutable.jsで作成された配列があります。

    var arr = Immutable.List.of(
        {
            id: 'id01',
            enable: true
        },
        {
            id: 'id02',
            enable: true
        },
        {
            id: 'id03',
            enable: true
        },
        {
            id: 'id04',
            enable: true
        }
    );

id: id03でオブジェクトを見つけるにはどうすればよいですか? enable値を更新して、新しい配列を取得したい

10
hh54188

最初に findIndex 、次に pdate リストを作成する必要があります。

const index = arr.findIndex(i => i.id === 'id03')
const newArr = arr.update(index, item => Object.assign({}, item, { enable: false }))

OR

const newArr = arr.update(
  arr.findIndex(i => i.id === 'id03'),
  item => Object.assign({}, item, { enable: false }) 
 )
10
caspg

@caspgの答えに同意しますが、配列が完全にImmutableの場合は、 findIndex および setInを使用して書き込むこともできます。

const updatedArr = arr.setIn([
  arr.findIndex(e => e.get('id') === 'id03'),
  'enable'
], false);

または、よりトグルベースのソリューションが最終的に必要な場合は、 updateIn を使用することもできます。

5
Mike Aski