首页 > 解决方案 > 使用具有条件的对象数组

问题描述

这里我们有一个对象数组:

var slides = [
{ id: 1, performance: 20, guided_phrases: ["I was sent", "I don't know"] },
{ id: 2, performance: 30, guided_phrases: ["to earth"] },
{ id: 3, performance: 40, guided_phrases: ["to protect you"] },
{ id: 4, performance: 15, guided_phrases: ["I was sent"] },
{ id: 5, performance: 50, guided_phrases: ["I was sent"] }
];

我想找到id包含guided_phrases 特定字符串(以 表示phrase variable)且最低performance...

因此,如果我们有,let phrase = "I was sent";那么输出应该是幻灯片 id 4,因为性能是幻灯片 1、4 和 5 中最低的。

我已经尝试过这段代码,但我需要一个简单的方法来记录 id:

let phrase = "I was sent";
let contain = [];
for(let i = 0; i < slides.length; i++){

   if(slides[i].guided_phrases.includes(phrase)){

     contain.push(slides[i].performance)
     console.log(contain)
     let max = Math.min.apply(null, contain); 
     console.log(max)
   }
}

标签: javascript

解决方案


如果您想要一个可读且易于遵循的功能,我会这样做:

const lowestPerformance = (slides, phrase) => {
    let currLowest = null;

    for (let i = 0; i < slides.length; i++) {
        let slide = slides[i];

        if (slide.guided_phrases.includes(phrase)) {
            currLowest =  ((currLowest === null) || slide.performance < (currLowest.performance)) ? slide : currLowest;
        }
    }

    return currLowest;
}

推荐阅读