我有2个对象列表:
people =
[{id: 1, name: "Tom", carid: 1},
{id: 2, name: "Bob", carid: 1},
{id: 3, name: "Sir Benjamin Rogan-Josh IV", carid: 2}];
cars=
[{id: 1, name: "Ford Fiesta", color: "blue"},
{id: 2, name: "Ferrari", color: "red"},
{id: 3, name: "Rover 25", color: "Sunset Melting Yellow with hints of yellow"}];
Run Code Online (Sandbox Code Playgroud)
是否有一个函数(可能在Angular,JQuery,Underscore,LoDash或其他外部库中)在这些函数的一行中进行左连接?就像是:
peoplewithcars = leftjoin( people, cars, "carid", "id");
Run Code Online (Sandbox Code Playgroud)
我可以编写自己的,但如果LoDash有一个优化版本,我想使用它.
假设我有这个对象(或这些对象的数组):
var person = {
birth: {
place: {
country: 'USA'
}
}
};
Run Code Online (Sandbox Code Playgroud)
我以为有一个lodash函数,我可以传入'birth.place.country'并获取值USA.
在lodasdh 3.x中有这样的功能,还是我想象这个?
我刚开始使用lodash并拥有这个对象数组,其中一个属性有一个整数或为null.我知道如何过滤数组中的null项,但我如何检查它是否为空?
假设我有这样的事情:
var users = [
{ 'user': 'barney', 'default': 1 },
{ 'user': 'dino', 'default': 0 },
{ 'user': 'wilma', 'default': 1 },
{ 'user': 'fred', 'default': null }
];
Run Code Online (Sandbox Code Playgroud)
然后我想要这样的东西:
var notNullDefault = _.filter(sourceData, ['is_default', ! null ]); // objects with names barney, dino, wilma
var nullDefault = _.filter(sourceData, ['is_default', null ]); // object with name fred
Run Code Online (Sandbox Code Playgroud)
再一次,我是lodash的新手,所以也许有更好的方法来实现这一点.
提前致谢.
我的对象groupBy.Food看起来像
[
Object
amount: "15.0"
category: Object
debit: true
__proto__: Object
,
Object
amount: "10.0"
category: Object
debit: true
__proto__: Object
,
Object
amount: "11.1"
category: Object
debit: true
__proto__: Object
]
Run Code Online (Sandbox Code Playgroud)
我想要的只是sum每个物体的数量.我正在使用Lodash reduce as
var s = _.reduce(groupBy.Food, function(s, entry){
return s + parseFloat(entry.amount);
});
Run Code Online (Sandbox Code Playgroud)
当我看到s我得到的价值
s
"[object Object]1011.1"
Run Code Online (Sandbox Code Playgroud)
我在这里做的不是什么?
我有这样的JSON:
[
{
platformId: 1,
payout: 15,
numOfPeople: 4
},
{
platformId: 1,
payout: 12,
numOfPeople: 3
},
{
platformId: 2,
payout: 6,
numOfPeople: 5
},
{
platformId: 2,
payout: 10,
numOfPeople: 1
},
]
Run Code Online (Sandbox Code Playgroud)
而且我希望platformId用和的payout和来对它进行分组numOfPeople.
即结果我想要这样的JSON:
[
"1": {
payout: 27,
numOfPeople: 7
},
"2": {
payout: 16,
numOfPeople: 6
}
]
Run Code Online (Sandbox Code Playgroud)
我尝试使用underscore.js的_.groupBy方法,它组合得很好,但我怎么能得到像上面演示的对象属性值的SUM?
我试图使用lodash forEach方法与嵌套函数调用mongo数据库.
var jobs = [];
_.forEach(ids, function(id) {
JobRequest.findByJobId(id, function(err, result) {
if(err) callback(err);
jobs.push(result);
});
});
callback(null, jobs);
Run Code Online (Sandbox Code Playgroud)
我遇到了问题,因为forEach和回调将在调用内部函数之前运行.我该如何解决这个问题?
我希望在每个和内部函数完成后调用回调.
我有
config.default_req = { foo: 'foo' }
this.default_req = _.clone(config.default_req);
this.default_req.body.data = 'bar';
Run Code Online (Sandbox Code Playgroud)
现在config.default_req.data等于'bar',为什么?,我认为用lodash进行克隆应该只是复制对象,丢失任何与原始对象的链接!
有关如何在node.js中真正克隆/复制对象的任何想法?(v.0.10.40)
编辑:对于那些将要解决这个问题的人来说,一个简单的克隆/复制功能:
var clone = function(source){
return JSON.parse(JSON.stringify(source));
};
Run Code Online (Sandbox Code Playgroud) 鉴于我有这个代码:
if (_.isFunction(this.doSomething)) {
this.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
因为loadingComplete是从父控制器传入的指令属性,可能并不总是提供,如果存在,是否有更简洁的单行方式来调用方法,而不重复方法名称?
就像是:
_.call(this, 'doSomething');
Run Code Online (Sandbox Code Playgroud) 在lodash中是否有一个函数来初始化一个给定长度的默认空值的数组?
当前使用的数组方法:
var myArray = Array.apply(null, Array(myArrayLength)).map(function() { return null });
Run Code Online (Sandbox Code Playgroud)
Lodash功能尝试使用:
var myArray = _.times(myArrayLength, null);
Run Code Online (Sandbox Code Playgroud)
必需的数组:
var myArray = [null, null, .......];
Run Code Online (Sandbox Code Playgroud) 我以前在我的Angular 4应用程序中使用了lodash,只需导入并使用它,如下所示:
import lodash from 'lodash';
public getSubtotal() : number {
return lodash.sumBy(this.cartItems, function(item) {
return item.product.price * item.item.quantity;
})
Run Code Online (Sandbox Code Playgroud)
}
我再一次尝试使用lodash,但是我得到的错误是lodash未定义.
import lodash from 'lodash';
lodash.indexOf([1, 2, 1, 2], 2);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR TypeError: Cannot read property 'indexOf' of undefined
at CustomizeComponent.showTopping (customize.component.ts:39)
at Object.eval [as updateDirectives] (CustomizeComponent.html:285)
at Object.debugUpdateDirectives [as updateDirectives] (core.js:14638)
at checkAndUpdateView (core.js:13785)
at callViewAction (core.js:14136)
at execComponentViewsAction (core.js:14068)
at checkAndUpdateView (core.js:13791)
at callViewAction (core.js:14136)
at execEmbeddedViewsAction (core.js:14094)
at checkAndUpdateView (core.js:13786)
Run Code Online (Sandbox Code Playgroud)