【问题标题】:Convert object to array of objects using lodash 3使用 lodash 3 将对象转换为对象数组
【发布时间】:2019-04-18 13:20:49
【问题描述】:

如何转换这样的对象

{
  "ID_PROC_GD": "1",
  "DT_INI": "2018-06-06",
  "CD_GD": "1",
  "DT_INI_GD": "2018-05-28",
  ...
}

到这里

[
  {
    "name": "DT_INI",
    "value": "2018-06-06"
  },
 ...
]

我正在使用 lodash 3.10.1

【问题讨论】:

标签: javascript arrays object lodash


【解决方案1】:

map总是返回数组类型,在迭代器中可以同时使用value和key:

_.map(obj, (value, name) => ({name, value}))

const obj = {
  "ID_PROC_GD": "1",
  "DT_INI": "2018-06-06",
  "CD_GD": "1",
  "DT_INI_GD": "2018-05-28",
}

const result = _.map(obj, (value, name) => ({
  name,
  value
}))

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js"></script>

【讨论】:

    【解决方案2】:

    您可以使用Object.entries()array#map

    let data = { "ID_PROC_GD": "1", "DT_INI": "2018-06-06", "CD_GD": "1", "DT_INI_GD": "2018-05-28"},
        result = Object.entries(data).map(([name, value]) => ({name, value}));
    console.log(result);

    您可以使用map

    let data = { "ID_PROC_GD": "1", "DT_INI": "2018-06-06", "CD_GD": "1", "DT_INI_GD": "2018-05-28"},
        result = _.map(data, (value, name) => ({name, value}));
    console.log(result);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js"></script>

    【讨论】:

      【解决方案3】:
       let obj = {
        "ID_PROC_GD": "1",
        "DT_INI": "2018-06-06",
        "CD_GD": "1",
        "DT_INI_GD": "2018-05-28" 
      }
      
      function getNameValObj(ele) {
        return {name: ele, value:obj[ele]};
      }
       
      let objList = _.flatMap(Object.keys(obj), getNameValObj);
      

      【讨论】:

      • 虽然这可能会回答作者的问题,但它缺少一些解释性文字和/或文档链接。如果没有围绕它们的一些短语,原始代码 sn-ps 并不是很有帮助。您可能还会发现how to write a good answer 非常有帮助。请编辑您的答案 - From Review
      • 确定你是对的。对解决方案的解释是,lowdash _.flatMap 方法通过通过 iteratee 运行集合中的每个元素并展平映射的结果来展平值数组。方法根据传递给第二个参数的方法的返回值返回新的扁平数组。
      【解决方案4】:

      你可以试试这个:

      let obj={
        "ID_PROC_GD": "1",
        "DT_INI": "2018-06-06",
        "CD_GD": "1",
        "DT_INI_GD": "2018-05-28",
      }
      _.map(obj,(item,index)=>({
          ['name']:index,
          ['value']:item
      }))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-06
        • 2019-01-26
        • 1970-01-01
        • 2019-08-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多