繁体   English   中英

Lodash将查找对象嵌套到数组

[英]Lodash nested lookup object to array

我有一个对象数组,其中包含语言数组。

 [
    {
        "productId":1,
        "productEmailTypeId":12,
        "languageEmails":[
            {
                "productEmailId":22,
                "languageId":1,
                "body":"some body"
            },
            {
                "productEmailId":33,
                "languageId":3,
                "body":"some body"
            }
        ]
    }
]

我将此数组转换为查找对象,因为它更适合我的需求

{
    "12":{
        "productId":1,
        "productEmailTypeId":12,
        "languageEmails":{
            "22":{
                "productEmailId":22,
                "languageId":1,
                "body":"some body"
            },
            "33":{
                "productEmailId":33,
                "languageId":3,
                "body":"some body"
            }
        }
    }
}

我的问题是我必须将其转换回初始形式,而且似乎无法正确处理。

这是我尝试过的:

_.chain(emails)
  .toArray()
  .map(item => _.toArray(item))
  .value();

问题是我失去了其他属性(它们被合并到数组中)

尽管有点冗长,但是您始终可以两次使用reduce方法来获取所需的转换:

const oldFormat = _.reduce(emails, function (acc, product) {
   return acc.concat({
     productId: product.productId,
     productEmailTypeId: product.productEmailTypeId,
     languageEmails: _.reduce(product.languageEmails, function (acc, language) {
      return acc.concat({
        productEmailId: language.productEmailId,
        languageId: language.languageId,
        body: language.body
      })
     }, [])
   })
}, [])
_.toArray(emails).map(item => { item.languageEmails = _.toArray(item.languageEmails); return item; });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM