lodash 铸造、映射和采摘
lodash casting, mapping and picking
我有一个对象数组,我正在将其简化为:
var expenses = [
{
arm: "0",
cat_id: "1",
crop: {
crop: "corn",
id: 1
},
crop_id: "1",
dist: "164.97",
expense: "Fertilizer",
id: "1",
loan_id: "1"
},
{
arm: "20",
cat_id: "8",
crop: {
crop: "corn",
id: 1
},
crop_id: "1",
dist: "0",
expense: "Labor",
id: "8",
loan_id: "1"
}
];
我正在努力以这样的方式结束:
var expenses = [{
arm: 0,
cat_id: 1,
crop: "corn",
crop_id: 1,
dist: 164.97,
expense: "Fertilizer",
id: 1,
loan_id: 1
},{
arm: 20,
cat_id: 6,
crop: "corn",
crop_id: 1,
dist: 0,
expense: "Labor",
id: 1,
loan_id: 1
}];
我可以在那个方向上得到某些部分,但不能毫无错误地将它们拼凑在一起。我无法找到如何将值转换为浮点数或将 crop 放入存根内部,因为转换为 returns 所有空值。我目前有这个:
flattened = _.map(expenses, function(item){
var crop = item.crop.crop;
var stub = _.pick(item, [
'id',
'loan_id',
'cat_id',
'expense',
'crop_id',
'arm',
'dist'
]);
var casted = _.map(stub, function(i){
i.crop = crop;
return i;
});
return stub;
});
感谢任何帮助。
Problem 1: I can't find out how to cast the values to float
使用 parseFloat.
应该很容易解决这个问题
例如
item.dist = parseFloat(item.dist);
Problem 2: put crop INSIDE of stub because casted returns all nulls
既然你已经在使用 lodash,不妨习惯他们的链接功能(惰性评估)。
var flattened = _.map(expenses, function(item) {
item.dist = parseFloat(item.dist);
return _(item)
.omit('crop')
.assign(_.omit(item.crop, 'id'))
.value();
});
上面的解决方案映射整个费用数组,将 item.dist
转换为浮点值,然后将 item.crop
对象的值展平到 item
对象,但以下情况除外item.crop.id
值。
Note: In regards to your solution above, using _.map
in an object
results to an array.
我基于@ryeballar 代码为自己的学习目的所做的尝试。
var flattened = _.map(expenses, function(item) {
return _(item)
.set('crop', item.crop.crop) // set item.crop
.set('dist', parseFloat(item.dist)) // set dist as (float)item.dist
.value();
});
我有一个对象数组,我正在将其简化为:
var expenses = [
{
arm: "0",
cat_id: "1",
crop: {
crop: "corn",
id: 1
},
crop_id: "1",
dist: "164.97",
expense: "Fertilizer",
id: "1",
loan_id: "1"
},
{
arm: "20",
cat_id: "8",
crop: {
crop: "corn",
id: 1
},
crop_id: "1",
dist: "0",
expense: "Labor",
id: "8",
loan_id: "1"
}
];
我正在努力以这样的方式结束:
var expenses = [{
arm: 0,
cat_id: 1,
crop: "corn",
crop_id: 1,
dist: 164.97,
expense: "Fertilizer",
id: 1,
loan_id: 1
},{
arm: 20,
cat_id: 6,
crop: "corn",
crop_id: 1,
dist: 0,
expense: "Labor",
id: 1,
loan_id: 1
}];
我可以在那个方向上得到某些部分,但不能毫无错误地将它们拼凑在一起。我无法找到如何将值转换为浮点数或将 crop 放入存根内部,因为转换为 returns 所有空值。我目前有这个:
flattened = _.map(expenses, function(item){
var crop = item.crop.crop;
var stub = _.pick(item, [
'id',
'loan_id',
'cat_id',
'expense',
'crop_id',
'arm',
'dist'
]);
var casted = _.map(stub, function(i){
i.crop = crop;
return i;
});
return stub;
});
感谢任何帮助。
Problem 1: I can't find out how to cast the values to float
使用 parseFloat.
应该很容易解决这个问题例如
item.dist = parseFloat(item.dist);
Problem 2: put crop INSIDE of stub because casted returns all nulls
既然你已经在使用 lodash,不妨习惯他们的链接功能(惰性评估)。
var flattened = _.map(expenses, function(item) {
item.dist = parseFloat(item.dist);
return _(item)
.omit('crop')
.assign(_.omit(item.crop, 'id'))
.value();
});
上面的解决方案映射整个费用数组,将 item.dist
转换为浮点值,然后将 item.crop
对象的值展平到 item
对象,但以下情况除外item.crop.id
值。
Note: In regards to your solution above, using
_.map
in an object results to an array.
我基于@ryeballar 代码为自己的学习目的所做的尝试。
var flattened = _.map(expenses, function(item) {
return _(item)
.set('crop', item.crop.crop) // set item.crop
.set('dist', parseFloat(item.dist)) // set dist as (float)item.dist
.value();
});