gpt4 book ai didi

javascript - 使用 lodash 提取混合对象/数组的叶子

转载 作者:行者123 更新时间:2023-11-28 13:15:09 25 4
gpt4 key购买 nike

var a  = {
"errors":{
"meters.electric":[
{"smart_meter":["The smart meter field is required."],"reading":["The selected reading is invalid."]}
],
"forename":[
{"invalid_character":["Invalid character in forname.", "Blah blah."]}
]
}
};

我有一个从 API 返回的对象,我需要提取最终值以创建单个字符串。上面的预期输出应该是:

The smart meter field is required. The selected reading is invalid.Invalid character in forname. Blah blah.

我知道我可以构建一系列循环来实现此目的,但是有 lodash 方法吗?类似于https://lodash.com/docs#flattenDeep的东西?

最佳答案

请允许我用一些作曲 lodash 来逗你开心。

在连接字符串之前,您可能需要一个通用函数来从任意复杂度的对象/数组中提取值。以下是您如何使用现有的 lodash 构建 block 来编写此函数:

const flattenCol = _.flow(
_.identity,
_.partialRight(_.map, _.cond([
[_.isArray, flattenCol],
[_.isPlainObject, flattenCol],
[_.stubTrue, _.identity],
])),
_.flattenDeep
);

这将从您的结构中提取所有值,在本例中为字符串。让我们来分解一下:

我发现保留像这样的通用功能非常有帮助。要构建字符串,您可以这样做:

flattenCol(a).join(' ');

或者,如果您想让创作派对继续进行:

const errorString = _.flow(flattenCol, _.partialRight(_.join, ' '));
errorString(a);

关于javascript - 使用 lodash 提取混合对象/数组的叶子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39128871/

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