gpt4 book ai didi

node.js - 如何将一个字符串元素的数组折叠到其字符串中?

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:21 24 4
gpt4 key购买 nike

假设

{
"foo":[
"baz"
],
"bar": {
"blarg": [
"blippo"
],
"blunder": {
"bus": [
{
"bigly": [
"bugnuts"
]
}
]
}
},
"blather": [
{
"bumpy": [
"bugaloo"
]
},
{
"blither": {
"bother": [
"bingo"
]
}
}
]
}

最有效的转换方法(最好使用 lodash)是什么,以便作为一个成员的数组的所有叶子现在都包含该成员,而不是数组?如:

{
"foo": "baz",
"bar": {
"blarg": "blippo",
"blunder": {
"bus": {
"bigly": "bugnuts"
}
}
},
"blather": [
{
"bumpy": "bugaloo"
},
{
"blither": {
"bother": "bingo"
}
}
]
}

该对象比我在这里展示的对象大得多,因此有许多可能的路径。

我首先尝试获取路径列表,如下所示:

foo[0]
foo
bar.blarg[0]
bar.blarg
bar.blunder.bus[0]
bar.blunder.bus
bar.blunder
bar
blather[0].bumpy[0]
blather[0].bumpy
blather[0]
blather[1].blither.bother[0]
blather[1].blither.bother
blather[1].blither
blather[1]
blather

并尝试首先进行深度和广度的突变,但当然,第一个突变有可能使其他路径无效。

我认为这是一个递归问题,但我找不到解决方案。

最佳答案

这是一个cloneDeepWith()该方法还涵盖包含单个对象的折叠数组。

var result = _.cloneDeepWith(data, function customizer(value) {
if(_.isArray(value) && _.size(value) === 1) {
value = value[0];
return _.isObject(value)?
_.cloneDeepWith(value, customizer):
value;
}
});

console.log(result);

var data = {
"foo":[
"baz"
],
"bar": {
"blarg": [
"blippo"
],
"blunder": {
"bus": [
{
"bigly": [
"bugnuts"
]
}
]
}
},
"blather": [
{
"bumpy": [
"bugaloo"
]
},
{
"blither": {
"bother": [
"bingo"
]
}
}
]
};

var result = _.cloneDeepWith(data, function customizer(value) {
if(_.isArray(value) && _.size(value) === 1) {
return _.isObject(value[0])?
_.cloneDeepWith(value[0], customizer):
value[0];
}
});

console.log(result);
body > div { min-height: 100%; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

关于node.js - 如何将一个字符串元素的数组折叠到其字符串中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42355602/

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