我是使用ImmutableJS库的新手,我在解决这个问题时遇到了一些麻烦。我有一个名为Options
的不可变记录对象。我希望能够遍历此Record,获取Record中每个项目的键和值。这是我的选项模型的样子:
export class Option extends Record ({
height: '10px',
width: '47px',
title: 'foo',
isAvailable: false
}) {
constructor(props) {
if (!props) {
super();
return;
}
}
}
我已经写了以下内容来遍历我的选项记录中的每个元素,但它似乎不起作用:
var options = new Options();
options.toSeq().map((value, key) => {
console.log(key + ': ' + value);
});
我希望这会将我的选项不可变记录中的每个键/值对写入控制台窗口。但是,它没有打印任何东西,甚至看起来根本没有在地图功能中运行代码。
如果你知道这里有什么问题,请告诉我。提前致谢! :)
答案 0 :(得分:0)
使用toMap
代替toSeq
var options = new Options();
options.toMap().map((value, key) => {
console.log(key + ': ' + value);
});
答案 1 :(得分:0)
我想使用记录的_values
,_keys
以及_defaultValues
和_iterate
属性。我认为下划线意味着他们是私人的,但我无法找到另一种方式!
class Option extends Immutable.Record({
height: '10px',
width: '47px',
title: 'foo',
isAvailable: false
}) {}
var option = new Option();
console.log(option._keys);
// ["height", "width", "title", "isAvailable"]
console.log(option._values.toJS());
// [undefined, undefined, undefined, undefined]
console.log(option._defaultValues);
// {
// height: '10px',
// width: '47px',
// title: 'foo',
// isAvailable: false
// }
// i like this one the best
option.__iterate((item, key) => console.log(key, item));
// height, 10px
// width, 47px
// title, foo
// isAvailable, false
答案 2 :(得分:0)
您可以使用for of
:
const options = new Options();
for (const [key, value] of options) {
console.log(`${key}:${value}`);
}