lodash map返回对象数组

时间:2016-06-16 18:43:04

标签: javascript lodash

我有一个对象的阵列,我希望将数据从医学转换为字符串。唯一的问题是,不是返回对象数组,而是让医学数组回归。

实施例 输入:

data = [{medicine: 1234, info: "blabla"},{medicine: 9585, info: "blabla"},..]

期望的输出:

data = [{medicine: "1234", info: "blabla"},{medicine: "9585", info: "blabla"},..]

我得到了什么? 一系列医学数字。

这是我的代码:

var dataMedicines = _.map(data, 'medicine').map(function(x) {
                return typeof x == 'number' ? String(x) : x;
            });

3 个答案:

答案 0 :(得分:8)

Lodash非常强大,但为了简单起见,请查看此演示

var data = [{
  medicine: 1234,
  info: "blabla"
}, {
  medicine: 9585,
  info: "blabla"
}];

dataMedicines = _.map(data, function(x) {
  return _.assign(x, {
    medicine: x.medicine.toString()
  });
});

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

答案 1 :(得分:6)

或者只是原生ES6解决方案:

const dataMedicines = data.map(({medicine, info}) => ({medicine: `${medicine}`, info}));

优点是这是一个更加实用的解决方案,可以保持原始数据的完整性。

答案 2 :(得分:3)

我猜你想要&#34;转换&#34;所有的药号都是字符串?

如果是这种情况,则不需要先进行映射。

var dataMedicines = _.map(data, function(x){
    var newObj = JSON.parse(JSON.stringify(x)); // Create a copy so you don't mutate the original.
    newObj.medicine = newObj.medicine.toString(); // Convert medicine to string.
    return newObj;
});