在JavaScript中使用map获取数组值
如何使此代码返回值而不是数组?这是我的表示法,其目的是检查ID之间是否匹配,并获得匹配值的在JavaScript中使用map获取数组值,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,如何使此代码返回值而不是数组?这是我的表示法,其目的是检查ID之间是否匹配,并获得匹配值的priceList数组。这可以简化,或者用.reduce()替换吗?需要额外的帮助吗 const priceList=options.map((productOption)=>{ const{data}=productOption; 返回数据.filter({option\u type\u id,price})=>{ 如果(已选择Options Array.indexOf(选项类型id)!=-1){ 退货价
priceList
数组。这可以简化,或者用.reduce()
替换吗?需要额外的帮助吗
const priceList=options.map((productOption)=>{
const{data}=productOption;
返回数据.filter({option\u type\u id,price})=>{
如果(已选择Options Array.indexOf(选项类型id)!=-1){
退货价格;
}
返回0;
});
});
我希望这有助于:
我假设数据很少(选项和selectedOptionsArray)
价格表中也可能有重复的价格,因为多个产品可能有相同的价格。您可以通过使用Set:
let uniqueItems=[…新设置(itemsArray)]
const选项=[{
数据:[{
选项类型标识:1,
价格:100
}, {
选项类型标识:2,
售价:200
}]
}, {
数据:[{
选项类型标识:3,
价格:300
}, {
选项类型id:4,
售价:400
}]
}]
const selectedoptions数组=[1,3,4];
const priceList=options.flatMap((productOption)=>productOption.data)。reduce((累加器,currentValue)=>{
const{option_type_id,price}=currentValue;
如果(已选择Options Array.indexOf(选项类型id)!=-1){
返回[…累加器,价格];
}
回流蓄能器;
}, []);
控制台日志(价格表)
我不明白,你想做什么,但是Array.prototype.map
总是返回一个数组。@ASDFGerte OP可能意味着他们得到嵌套数组?在这种情况下,.map
->.flatMap
。但是如果它是不同的,我不确定。.filter()
的回调必须返回一个布尔值。为什么要返回任意数字?使用map
而不是filter
您将得到一个数字数组。