Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用Lodash处理JSON_Javascript_Json_Lodash - Fatal编程技术网

Javascript 用Lodash处理JSON

Javascript 用Lodash处理JSON,javascript,json,lodash,Javascript,Json,Lodash,使用此代码let result=u.groupBy(obj,'type')我有这个报税表: { "success": [{ "type": "success", "messages": "Assignment saved." }, { "type": "success", "messages": "Assignment saved." }, { "type": "success",

使用此代码
let result=u.groupBy(obj,'type')我有这个报税表:

{
    "success": [{
        "type": "success",
        "messages": "Assignment saved."
    }, {
        "type": "success",
        "messages": "Assignment saved."
    }, {
        "type": "success",
        "messages": "Assignment saved."
    }]
}
但我需要转换成这样:

{
    "error": ["Error msg", "Error 2 msg", "Error 3 msg"],
    "notice": ["Notice 1 msg", "Notice 2 msg"],
    "success": ["Success 1 msg", "Success 2 msg", "Success 3 msg"]
}
我应该在代码中做什么不同的事情


我缺少一些关于Lodash的配置

库并不总是要走的路:

function groupMessagesByType(数据输入){
让dataOut={}
对于(变量i=0;i
查看工作解决方案。 使用此解决方案,您不会被锁定到相同类型的消息

我用了
。.groupBy

let list = [{type: "success", message: "msg1"},{type: "success", message: "msg2"},{type: "success", message: "msg3"},{type: "notice", message: "msg1"}, {type: "notice", message: "msg2"}, {type: "error", message: "msg1"}]

console.log("\n\n---------Full initial list of events");
console.log(list);

console.log("\n\n---------Events grouped by type");
console.log(_.groupBy(list, 'type'));

console.log("\n\n---------Your format");
let groups = _.groupBy(list, 'type')
let keys = Object.keys(groups);
for (let key of keys) {
    groups[key] = groups[key].map(elem => elem.message)
}
console.log(groups);

问题中包含的代码令人困惑。像这样的

const result = _(obj)
  .groupBy("type")
  .mapValues(objs => objs.map(o => o.messages))
  .value()

他们是按类型分组的,这并不是要修改objectsyeap,我需要找到一种方法来做。我需要
groupBy
并额外调整我的
return
以获得
数组。但是我找不到任何关于如何使用
groupBy
操作
对象的
文档
。因此,在输入对象中已经有一个名为
success
的键,它是一个数组?或者这仅仅是groupBy的结果?同样,对于
错误
注意事项
,是否有单独的数组?或者一个数组中的所有数据和的名称。数组的关键是
成功
(这很尴尬)。您能给我们看一下原始输入吗?您应该粘贴原始的
obj
。此外,预期值显示其他对象中未显示的键和消息,这没有意义。谢谢,此解决方案有效。我也做了类似的事情,但我试图在这个案例中使用LoDash,但不可能,或者我遗漏了一些信息。再次感谢你,伙计。没有库你什么都可以做,但是如果使用它们让代码更具声明性(可能更短),使用众所周知的函数抽象(map、filter、sortBy等等),为什么不呢?你也可以使用
.forOwn(groups,v=>v.map((v2,i,a)=>a[i]=v2.message))
@CoderPi:1)lodash加载在这个小提琴中了吗?,2)OP将
消息
作为键,而不是
消息