使用Lodash将字符串数组转换为对象数组

时间:2018-09-04 20:05:26

标签: javascript lodash

lodash中有一种简单的方法可以做到这一点:

const sampleSource = [
  "String 1",
  "String 2",
]

并得到这个:

[
  {id: "String 1", text: "String 1"},
  {id: "String 2", text: "String 2"},
]

我需要像这样格式化它,以传递给第三方反应组件。我已经玩过.map和.zipObject了,但是还无法正确处理。

我认为类似的方法应该起作用:

_.chain(sampleSource).map(s => ({ id: s, text: s })).value()

但这给了我

[
  {
    id: ["String 1", "String 2"],
    text: ["String 1", "String 2"],
  }
]

3 个答案:

答案 0 :(得分:1)

类似这样的事情。 添加了链示例。

const sampleSource = [
  "String 1",
  "String 2",
]

let result = _.map(sampleSource, function(item) {
  return {id: item, text: item};
});

console.log(result);

let result2 = _.chain(sampleSource).map(function(item) {
  return {id: item, text: item};
});

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

答案 1 :(得分:0)

您不需要使用破折号,普通的JavaScript .map()应该可以使用。

const sampleSource = [
  "String 1",
  "String 2",
];

const result = sampleSource.map(s => ({id: s, text: s}));
console.log(result);

答案 2 :(得分:-1)

lodash中有一个名为keyBy的方法。

您可以像这样使用它

const sampleSource = [
  "String 1",
  "String 2",
];

const result = _.keyBy(sampleSource);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>