【发布时间】:2018-08-23 15:27:10
【问题描述】:
这是我的对象数组
[{
"key1": "value1",
"key2": "value2",
"key3": ["value3", "value4"]
}]
结果应该是这样的
[{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}, {
"key1": "value1",
"key2": "value2",
"key3": "value4"
}]
所以我想去掉属性key3中的子数组,得到新的等效结构,复制所有其他属性。
由于我无法更改的原因,我应该使用 lodash,但仅限于 2.4.2 版
编辑:更详细地说:我正在使用基于 JSON 的表单引擎,它允许使用现有函数(如 lodash 函数)但不允许定义新函数。我也不能使用 for 循环之类的控制结构。本质上我只能使用链式基本函数调用,包括 lodash。
我尝试使用map,但是map不能扩展数组,它只能将一个数组元素转换成不同的东西
我可以在这里使用任何 lodash 魔法吗?
EDIT2:这里有一个例子,说明我说“我不能引入新功能”时的意思。它将检查对象数组对于某个属性子集是否是唯一的
model = [{
"key1": "value1",
"key2": "value2",
"key3": "valuex"
},{
"key1": "value1",
"key2": "value2",
"key3": "valuey"
}]
// will give false because the two objects are not unique regarding the combination of "key1" and "key2"
_.uniq(model.map(_.partialRight(_.pick, ["key1", "key2"])).map(JSON.stringify)).length === model.length
【问题讨论】:
-
这听起来像是一个非常具体的案例......规则集总是一样吗?另外,它是否意味着递归?
-
不,它只是一个级别......是的,规则集总是相同的
-
那么
[{ "key1": "value1", "key2": "value2", "key3": ["value3", "value4"], "key4":["value5","value6","value7"] }]的期望结果是什么? -
正如我所说的......规则集总是相同的。这意味着,我只想扩展 key3 属性,它始终是一个数组。其他属性不应该被触及,而只是复制到新元素中
-
@devnull69 只是想知道答案是否定的?如果是这样,您能否详细说明它们如何不适合您?评论会很棒。
标签: javascript lodash