gpt4 book ai didi

javascript - Immutable.is() 可以接受任何 Immutable 类型吗?

转载 作者:行者123 更新时间:2023-12-03 05:33:03 27 4
gpt4 key购买 nike

https://facebook.github.io/immutable-js/docs/#/is

我尝试比较 2 个 OrderedMap,但 Immutable.is 函数不起作用。

它只能比较 map 和列表吗?

比较深度 2 OrderedMap 的好方法是什么?

    let example: Immutable.OrderedMap = Immutable.OrderedMap({
'a': Immutable.Map({
rate: 1.3411,
key: 1000
}),
'c': Immutable.Map({
rate: 1.3412,
key: 1001
}),
'b': Immutable.Map({
rate: 1.3412,
key: 1002
}),
'd': Immutable.Map({
rate: 1.3410,
key: 1003
})
});

let expectedResult: Immutable.OrderedMap = example;

//adds a field to each immutable map in example
example = modifyFunction(example);

expect( Immutable.is(example, expectedResult) ).to.be.true;


function modifyFunction(example: Immutable.OrderedMap): Immutable.OrderedMap {


example.forEach((item, index) => {
item = item.set('rank', index + 1);
});

return example;
}

它不断返回 true。我需要它是假的。

最佳答案

您的modifyFunction实际上并未修改example。每当您修改 ImmutableJS 中的数据结构时,它都会返回一个新对象,因此 forEach 不能用于修改 OrderedMap。您正在寻找map .

function modifyFunction(example: Immutable.OrderedMap): Immutable.OrderedMap {
return example.map((value, key) => {
return value.set('rank', key + 1);
});
}

因此,是的,Immutable.is 可以采用任何不可变类型,但在修改对象时必须使用正确的函数才能看到值的变化。

关于javascript - Immutable.is() 可以接受任何 Immutable 类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40854461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com