javascript - 使用 Lodash 转换对象数组

标签 javascript arrays object underscore.js lodash

我正在尝试简化复杂的结构。
我尽可能地简化了它并将其简化为:

[
  {'Cells':{'Results':[
                        {'Key':'ID','Value':123},
                        {'Key':'Color','Value':'Red'},
                        {'Key':'Direction','Value':'West'}
                      ]}},
  {'Cells':{'Results':[
                        {'Key':'ID','Value':456},
                        {'Key':'Color','Value':'Green'},
                        {'Key':'Direction','Value':'East'}
                      ]}}
]

我的 lodash 缺乏技能,我需要帮助将上面的内容变成这样:

[
  {'ID':123, 'Color':'Red', 'Direction':'West'},
  {'ID':456, 'Color':'Green', 'Direction':'East'}
]

顺便说一下,键的数量因对象而异。至少,它可能只有 ID,但有些可能不止示例中的这三个。

最佳答案

在普通的 Javascript 中,你可以使用两个嵌套循环。

var array = [{ 'Cells': { 'Results': [{ 'Key': 'ID', 'Value': 123 }, { 'Key': 'Color', 'Value': 'Red' }, { 'Key': 'Direction', 'Value': 'West' }] } }, { 'Cells': { 'Results': [{ 'Key': 'ID', 'Value': 456 }, { 'Key': 'Color', 'Value': 'Green' }, { 'Key': 'Direction', 'Value': 'East' }] } }],
    condensed = array.map(function (a) {
        var o = {};
        a.Cells.Results.forEach(function (b) {
            o[b.Key] = b.Value;
        });
        return o;
    });

console.log(condensed);

关于javascript - 使用 Lodash 转换对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38205498/

相关文章:

javascript - Jquery在一秒后隐藏gif

c++ - 如果条目大于 90,则打印出字符串的 boolean 函数

arrays - 在 Go 中克隆 float slice 而不影响原始

java - 如何将学生添加到名册(来自 Java 的不同类(class))?

javascript - SharePoint 列表不考虑 RowLimit CAML 标记 - JavaScript

javascript - 如何在 jquery 中向数组文本框添加值?

Javascript 用另一个数组映射 obj 数组以获得不同的键值

javascript - 从 JSON 中提取对象并在 jQuery 中重建新的 JSON

javascript - 如何防止子级点击事件冒泡到父级?

c - 未初始化的 malloc 内存在不同环境中的不同行为