更新未知 Immutable.js 地图结构
Updating unknown Immutable.js Map structure
我的任务是更新我不知道路径的深层嵌套值,因为数据是动态的。
示例:
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 中完成吗?如果可以,怎么做?
您可以简单地使用递归来解析和更新包含 strings/numbers:
的列表
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>
我的任务是更新我不知道路径的深层嵌套值,因为数据是动态的。
示例:
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 中完成吗?如果可以,怎么做?
您可以简单地使用递归来解析和更新包含 strings/numbers:
的列表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>