Lodash double where
Lodash double where
我有一个具有以下结构的 JS 数组:
[
{group: 'group1', addons: [{name: 'addon1', price: '100'}, {name: 'addon2', price: '130'}] },
{group: 'group2', addons: [{name: 'addon3', price: '150'}] },
{group: 'group3', addons: [{name: 'addon4', price: '200'}] }
]
所以它是一组数组,每个组包含一组 addons
。
如何在 lodash 的帮助下实现 getAddon(addonName)
方法?用2个for/foreach循环做起来很简单,但也许有更简单的方法?
例如 getAddon('addon1')
应该 return {name: 'addon1', price: '100'}
- 第一个找到的加载项条目。
我是如何实现的,抱歉打字稿代码:
public getAddon(addonName: string): _IAddonModel {
if (!this.groups) return null;
//todo refactor using underscore/lodash
for (var i = 0; i < this.groups.length; i++) {
var group = this.groups[i];
for (var j = 0; j < group.addons.length; j++) {
var addon = group.addons[j];
if (addon && addon.name === addonName) {
return addon;
}
}
}
return null;
}
谢谢。
var result = _(data)
.pluck('addons')
.flatten()
.findWhere({name: 'addon3'});
http://jsfiddle.net/4g4wbu13/1/
所以你 - pluck() all the nested addons
arrays, flatten() them in a single level depth array, and use findWhere() 获取特定项目。
我有一个具有以下结构的 JS 数组:
[
{group: 'group1', addons: [{name: 'addon1', price: '100'}, {name: 'addon2', price: '130'}] },
{group: 'group2', addons: [{name: 'addon3', price: '150'}] },
{group: 'group3', addons: [{name: 'addon4', price: '200'}] }
]
所以它是一组数组,每个组包含一组 addons
。
如何在 lodash 的帮助下实现 getAddon(addonName)
方法?用2个for/foreach循环做起来很简单,但也许有更简单的方法?
例如 getAddon('addon1')
应该 return {name: 'addon1', price: '100'}
- 第一个找到的加载项条目。
我是如何实现的,抱歉打字稿代码:
public getAddon(addonName: string): _IAddonModel {
if (!this.groups) return null;
//todo refactor using underscore/lodash
for (var i = 0; i < this.groups.length; i++) {
var group = this.groups[i];
for (var j = 0; j < group.addons.length; j++) {
var addon = group.addons[j];
if (addon && addon.name === addonName) {
return addon;
}
}
}
return null;
}
谢谢。
var result = _(data)
.pluck('addons')
.flatten()
.findWhere({name: 'addon3'});
http://jsfiddle.net/4g4wbu13/1/
所以你 - pluck() all the nested addons
arrays, flatten() them in a single level depth array, and use findWhere() 获取特定项目。