簡體   English   中英

使用lodash從數組返回對象屬性

[英]return object property using lodash from array

我一直試圖通過首先過濾它來返回對象的屬性。 這是我做的:

var characters = [
  { 'name': 'barney',  'age': 36, 'blocked': false },
  { 'name': 'fred',    'age': 40, 'blocked': true },
  { 'name': 'pebbles', 'age': 1,  'blocked': false }
];

_.find(characters, function(chr) {
     return  chr.age == 40
});

它返回整個對象,因為我想返回特定屬性。 任何人都可以指導我如何做到這一點?

任何幫助將不勝感激。

你可以使用Lodash 鏈接能力 顧名思義,它使您能夠鏈接Lodash方法調用。 _.filter_.map在這里是合適的:

 const characters = [ { 'name': 'barney', 'age': 36, 'blocked': false }, { 'name': 'fred', 'age': 40, 'blocked': true }, { 'name': 'pebbles', 'age': 1, 'blocked': false }, ] const names = _(characters) .filter(c => c.age < 40) .map('name') .value() alert(names) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.3.0/lodash.min.js"></script> 


為了記錄,這是你在純JS中的表現:

 const characters = [ { 'name': 'barney', 'age': 36, 'blocked': false }, { 'name': 'fred', 'age': 40, 'blocked': true }, { 'name': 'pebbles', 'age': 1, 'blocked': false }, ] const names = characters .filter(c => c.age < 40) .map(c => c.name) alert(names) 

_。屬性

var array = [{a: 1, b: 2}, {a: 3, b: 4}]
array.map(_.property('a')) // => [1, 3]

_.map簡寫

var array = [{a: 1, b: 2}, {a: 3, b: 4}]
_.map(array, 'a') // => [1, 3]
_.result(_.find(characters, function(obj) {
       return obj.age === 40;
}), 'name');

正如elclanrs在評論中提到的,明顯的解決方案只是在過濾對象后訪問屬性age

但是如果你想在方法中完成,你可以先提取所有年齡值,然后在其上find allpy函數:

var ageValues = _.pluck(characters, 'age'); //returns [36, 40, 1]

var resultAgeValue = _.find(ageValues, function(ageValue) {
   return  ageValue < 40
});

或者,鏈中更好的外觀:

var resultAgeValue = _(characters).pluck('age').find(function(ageValue) {
   return  ageValue < 40
});

嘗試jsFiddle: http//jsfiddle.net/pqr/j8rL780u/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM