如何解决基于数组从对象返回值数组
我想返回一个基于替代名称的 wsname 数组。例如,我提供一个数组 ["AAVEETH","AAVEXBT"]
并返回 ["AAVE/ETH","AAVE/XBT"]
。
我想出了如何像这样使用 lodash
__.filter
const wsnames = _.filter(
obj,(item) => item.altname === 'AAVEETH' || item.altname === 'AAVEXBT'
)
但这只会返回完整的对象条目。另外,我的输入数组不会事先知道。
解决方法
首先用Object.values()
把对象的值变成一个值数组。现在,您可以使用 filter
之类的数组方法过滤掉不需要的值,并使用 map
创建一个只有 wsname
属性的新数组。
const wsNames = Object.values(obj)
.filter(({ altname }) => altname === 'AAVEETH' || altname === 'AAVEXBT')
.map(({ wsname }) => wsname);
现在您可以将此逻辑转换为一个函数,您可以在该函数中传递要从中过滤的对象以及要从中获取 altname
值的 wsname
值数组。
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
来获取所有 {{1} } as values
然后我进行过滤以获取匹配 array
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。