lodash 映射返回对象数组
lodash map returning array of objects
我有一组对象,我希望将数据从药物转换为字符串类型。唯一的问题不是返回对象数组,而是返回药物数组。
例子
输入:
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;
});
我猜你想要 "transform" 所有药物编号到字符串?
如果是这样,就不需要先映射了。
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;
});
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>
或者只是原生 ES6 解决方案:
const dataMedicines = data.map(({medicine, info}) => ({medicine: `${medicine}`, info}));
优点是这是一个更实用的解决方案,可以完整保留原始数据。
我有一组对象,我希望将数据从药物转换为字符串类型。唯一的问题不是返回对象数组,而是返回药物数组。
例子 输入:
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;
});
我猜你想要 "transform" 所有药物编号到字符串?
如果是这样,就不需要先映射了。
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;
});
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>
或者只是原生 ES6 解决方案:
const dataMedicines = data.map(({medicine, info}) => ({medicine: `${medicine}`, info}));
优点是这是一个更实用的解决方案,可以完整保留原始数据。