在映射Javascript中选择单个对象
我要开始为我的英语道歉^^ 我有以下代码:在映射Javascript中选择单个对象,javascript,arrays,Javascript,Arrays,我要开始为我的英语道歉^^ 我有以下代码: data:function(){ 返回{ 萨博:0, 柯尔:0, teor:0, 啤酒:[] } }, 方法:{ 芬顿(){ var menor=150; 选择变量=[]; log(this.sabor、this.cor、this.teor) var目标=this.sabor+this.cor+this.teor log(`Goal:${Goal}`) this.beers.map(beer=>{ var分数=啤酒.srm+啤酒.ibu+啤酒.酒精
data:function(){
返回{
萨博:0,
柯尔:0,
teor:0,
啤酒:[]
}
},
方法:{
芬顿(){
var menor=150;
选择变量=[];
log(this.sabor、this.cor、this.teor)
var目标=this.sabor+this.cor+this.teor
log(`Goal:${Goal}`)
this.beers.map(beer=>{
var分数=啤酒.srm+啤酒.ibu+啤酒.酒精
log(`Beer score:${score}`)
var choose=Math.abs(目标-分数)
log(`Difference:${choose}`)
如果(选择
如你所见,我有一系列的啤酒。
每种啤酒都有一些数据,如酒精、ibu和srm。用户将选择每种规格的数量(通过HTML),我想找到最相似的饮料
我定义了一个可变的目标,它是这3个属性的总和。然后,在一个映射中,我添加啤酒属性,并与目标进行比较。啤酒分数和目标之间差异最小的啤酒应该是用户正在搜索的啤酒,但这是我的问题
我试着开始一个空数组,然后用啤酒推它,差别较小(到目标),但这样它给了我和数组对象
我的问题是,我能做些什么,在78行和79行中,选择完美的啤酒(差别最小)返回给我的用户?让我们尝试回答您的问题 我试着开始一个空数组,然后用啤酒推它,差别较小(到目标),但这样它给了我和数组对象 这纯粹是因为您将其打印为字符串。
见:
数据={
萨博:1,
林后:2,
teor:4,
啤酒:[
{srm:1,ibu:1,酒精:0},
{srm:1,ibu:1,酒精:1},
{srm:1,ibu:1,酒精:2},
{srm:2,ibu:1,酒精:2},
{srm:2,ibu:2,酒精:2},
]
}
函数findOne(){
var menor=150;
选择变量=[];
var目标=data.sabor+data.cor+data.teor
用于(数据的常量啤酒。啤酒){
var分数=啤酒.srm+啤酒.ibu+啤酒.酒精
var choose=Math.abs(目标-分数)
如果(选择 log(`selected:`,seleconadas)//发布你的]你确定你不仅仅是在控制台上看到对象吗?谢谢Itamar!第一个选项工作得很好,但是reduce这个选项很漂亮,仍然很好:)PS:我不明白相似性的部分,它对过滤有什么作用?相似性只是我们的目标与每个beerHappy的得分之间的差异p、 请注明答案,以备将来读者参考
data: function() {
return {
sabor: 0,
cor: 0,
teor: 0,
beers: []
}
},
methods: {
findOne(){
var menor = 150;
var selecionadas = [];
console.log(this.sabor, this.cor, this.teor)
var goal = this.sabor + this.cor + this.teor
console.log(`Goal: ${goal}`)
this.beers.map( beer => {
var score = beer.srm + beer.ibu + beer.alcohol
console.log(`Beer score: ${score}`)
var choose = Math.abs(goal - score)
console.log(`Difference: ${choose}`)
if(choose < menor){
menor = choose
selecionadas.push(beer)
}
})
console.log(`Smallest difference: ${menor}`)
console.log(`selected: ${selecionadas}`)
},