[英]How to return the matching results from Array of object based on an array of input values
[英]Return array of values from object based on array
我有一个看起来像这样的 object
我想返回一个基于 altnames 的 wsnames 数组。 例如,我提供一个数组["AAVEETH", "AAVEXBT"]
并返回["AAVE/ETH", "AAVE/XBT"]
。
我想出了如何像这样使用lodash
__.filter
const wsnames = _.filter(
obj,
(item) => item.altname === 'AAVEETH' || item.altname === 'AAVEXBT'
)
但这只会返回完整的 object 条目。 此外,我的输入数组不会事先知道。
首先使用Object.values()
将 object 的值转换为值数组。 现在,您可以使用filter
之类的数组方法来过滤掉不需要的值,并map
创建一个仅具有wsname
属性的新数组。
const wsNames = Object.values(obj)
.filter(({ altname }) => altname === 'AAVEETH' || altname === 'AAVEXBT')
.map(({ wsname }) => wsname);
现在,您可以将此逻辑转换为 function,在其中传递要从中过滤的 object 以及要从中获取wsname
值的altname
值数组。
const getWsNames = (obj, altNames) => Object.values(obj)
.filter(({ altname }) => altNames.includes(altname))
.map(({ wsname }) => wsname);
const wsNames = getWsNames(obj, ['AAVEETH', 'AAVEXBT']);
您可以使用Object.values
和array.filter
来实现这一点。
let arr = ["AAVEETH", "AAVEXBT"]
let masterObj = [....] // your object having all data
result = []
arr.forEach(i => {
let found = Object.values(masterObj).filter(i => i.altname)[0]
if(found){
result.push(i.wsname)
}
})
在上面的代码中,我只是在您的altname
数组上循环,代表您要获取wsname
数组,并且我正在使用object.values
将所有values
作为array
获取,然后我正在过滤以获取匹配的 object 的 wsname具有匹配altname
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.