Lodash предоставляет аналогичную функциональность LINQ для программ JavaScript (а затем некоторые), хотя и не отложенное выполнение. Запросы LINQ откладываются до тех пор, пока они не будут перечислены, в то время как lodash (обычно) немедленно выполняет запрос и возвращает массив/объект Результаты. (Хотя в данном случае LINQ не будет даже отложить его, поскольку FirstOrDefault
возвращает скаляр, а не запрашиваемый/перечислит.)
В вашем случае, вы могли бы сделать что-то вроде этого:
let obj = {
get promoImage() {
return _.find(assets, a => a.assetTypeCd === 'promoimage');
},
// ...
};
Тогда obj.promoImage
доступа будет выполнять функцию для получения значения атрибута.
(Здесь я предполагаю, что это, где мы создаем новый объект, и assets
список активов в лексической области видимости функции конструктора. Вы можете изменить его, чтобы ссылаться на this
, если вы храните данные на самом объекте и . не в конструкторах upvalues)
Примечания:
- Lodash не зависит от Угловая вообще.
- ES6 предоставляет метод
find()
в прототипе Array, поэтому эта функция будет встроена в браузеры после принятия ES6. К сожалению, IE является (как обычно) outlier без какой-либо поддержки для него. Тем не менее, Lodash по-прежнему очень полезная библиотека, чтобы иметь в вашем наборе инструментов, и обратите внимание, что Lodash's find()
работает и с объектами, а не только с массивами.