如何使用immutablejs映射删除一个元素。这是我的代码。

const initialState = Map({
            job: [
                {text: 'a'},
                {text: 'b'}
            ]
        });

const newState = initialState.delete({job: [text: 'a']});


但这是行不通的。尝试了不同的方法,但无法使其正常工作。

最佳答案

您可以使用deleteIn和属性映射来删除不可植入映射的深层属性。

const initialState = Immutable.fromJS({
            job: [
                {text: 'a'},
                {text: 'b'}
            ]
        })

console.log(initialState.toJS());

const newState = initialState.deleteIn(["job","0"])

console.log(initialState.toJS());
console.log(newState.toJS());


您也可以使用Lodash _.toPath方法将点表示法中的字符串路径转换为属性路径数组

const path = _.toPath("job[0].text") //["job", "0", "text"]
const value = initialState.getIn(path) //a

09-20 01:08