我的任务是更新深层嵌套值,因为数据是动态的,所以我不知道其路径。
示例:
const errors = Immutable.fromJS({
clients: [
{
users: {
names: ["Joseph", "John"],
items: ["Passport", "ID"],
},
},
],
items: {
data: {
codes: ["543", "765", "549"],
},
},
});
期望的输出:
const errors = Immutable.fromJS({
clients: [
{
users: {
names: "Joseph,John",
items: "Passport,ID",
},
},
],
items: {
data: {
codes: "543,765,549",
},
},
});
在这种情况下,我需要连接嵌套数组(列表)内的所有字符串。我可以加入嵌套数组,但我需要先以某种方式获取它。我正在考虑获取 Map
嵌套结构,但还没有找到它的方法(仅适用于同一级别的键)。这可以在 Immutable.js 中完成吗?如果是这样,怎么办?
最佳答案
您可以简单地使用递归来解析和更新包含字符串/数字的列表:
let errors = Immutable.fromJS({
clients: [
{
users: {
names: ["Joseph", "John"],
items: ["Passport", "ID"],
},
},
],
items: {
data: {
codes: ["543", "765", "549"],
},
},
});
const update = (object) => {
if (typeof object.map === 'function') {
return object.map((value) => {
if (Immutable.List.isList(value) &&
value.every((val) => ['string', 'number'].includes(typeof val))
) {
return value.join();
}
return update(value);
});
}
return object;
}
errors = update(errors);
console.log(errors);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.min.js"></script>
关于javascript - 更新未知的 Immutable.js 映射结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60395164/