在映射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}`)
    },