Js / Lodash获取数组值的父对象

时间:2016-08-02 13:46:47

标签: javascript lodash

给出以下数组:

var arr = [   { id: '123', numbers: [123,456,789] },  { id: '456', numbers: [6543,344,34534] }]

如何在数组数组中获取包含123的对象的父对象。

EG。我想搜索'123'并获取:

 { id: '123', numbers: [123,456,789] }

我尝试过使用:

https://lodash.com/docs#find

 _.find(arr, 123);
_.findKey(arr,123);

这可以用_map完成吗? https://lodash.com/docs#map

2 个答案:

答案 0 :(得分:1)

@gcampbell是正确的。

转换为JavaScript,它应该是

@Component({
  selector: 'child-event-producer',
  template: `
    <p (mousemove)="handle($event)">
      <ng-content></ng-content>
    </p>
  `
})
export class ChildEventProducerComponent {
  constructor(private svc:LocationService) {}

  handle(e:MouseEvent) {
    this.svc.moveTo({x: e.x, y: e.y});
  }
}

您可以参考Underscore documentation了解更多信息。

答案 1 :(得分:0)

由于您已使用lodash,因此可以使用collection.find

语法:

_.find(collection, [predicate=_.identity], [fromIndex=0])

[predicate=_.identity]是为每次迭代执行的函数。因此,不要传递123,而是传递此函数。

注意:这可以使用Array函数完成,但它们存在兼容性问题,因为您已经在使用lodash,根据我的理解,这种方法更适合。

var arr = [{
  id: '123',
  numbers: [123, 456, 789]
}, {
  id: '456',
  numbers: [6543, 344, 34534]
}]

// ES6 version
var r = _.find(arr, x => x.id == '123');

// ES5 version
var r1 = _.find(arr, function(el){ return el.id == '123' });
console.log(r, r1)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.14.1/lodash.min.js"></script>