Lodash Map数组内的数组

时间:2016-11-22 09:54:32

标签: javascript arrays object lodash

"info": {
    "core": [{
        "name": "User",
        "fields": [{
            "field": "name",
        }, {
            "field": "age",
        }]
    }, {
        "name": "Post",
        "fields": [{
            "field": "title",

        }, {
            "field": "body",
        }, {
            "field": "author",
        }]
    }]
}

如何映射这些结构数据。我希望在网络视图上实现类似的功能:

1

  • 名称值
  • 字段
    • 字段值
    • 字段值

2

  • 名称值
  • 字段
    • 字段值
    • 字段值

依旧......

我尝试使用lodash地图看起来像这样,它是一个好方法吗?

const info = _.map(info.core, function (value: any) {
  const fields = _.map(value.fields, function (fields: any) {
    return field;
  });

  const demo = {
    name: name,
    fields: fields.join('')
  };

  return demo;
});

console.log(demo);

1 个答案:

答案 0 :(得分:1)

不确定为什么你甚至需要映射。也许我误解了这个问题。

如果你想渲染这些数据,只需按原样解析,你就不需要再进行任何转换了。

下面我为了简单起见使用了document.write,但更好的方法是直接使用createElement等操作DOM。



var info = {
    "core": [{
        "name": "User",
        "fields": [{
            "field": "name",
        }, {
            "field": "age",
        }]
    }, {
        "name": "Post",
        "fields": [{
            "field": "title",

        }, {
            "field": "body",
        }, {
            "field": "author",
        }]
    }]
}

var w = document.write.bind(document);

info.core.forEach((c,i) => { 
  w(`<p>${i+1}.</p>`);
  w('<ul>');
  w(`<li>${c.name}</li>`);
  w('<li>fields');
  w('<ul>');
  c.fields.forEach((f) => {
    w(`<li>${f.field}</li>`);
  });
  w('</ul>');
  w('</li>');
  w('</ul>');
});
&#13;
&#13;
&#13;