javascript - 更新未知的 Immutable.js 映射结构

标签 javascript arrays object immutable.js

我的任务是更新深层嵌套值,因为数据是动态的,所以我不知道其路径。

示例:

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/

相关文章:

javascript - 根据用户选择选择不同的JSON

javascript - javascript数组中的引用错误

javascript - 如何在对象数组中找到具有最高值的对象?

javascript - 创建以变量名作为键的 Javascript 对象

javascript - DOM 背景颜色传播闪烁继承 Google Chrome 中的初始背景颜色,使用主题切换来重载主体背景颜色

html - 返回 JS 函数的值并将其用作输入按钮的值

javascript - IE9 中有效输出,但 IE7/IE8 中未定义输出

javascript - PHP、Javascript 获取mysql数据并在javascript中进行计算

php - 如何清理 PHP 换行符

javascript - 如何在 Javascript 中使用提示在对象内添加属性?