javascript - 使用具有条件的对象数组
问题描述
这里我们有一个对象数组:
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)
}
}
解决方案
如果您想要一个可读且易于遵循的功能,我会这样做:
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;
}
推荐阅读
- flutter - Flutter showGeneralDialog 与 Slide 和 Fade 动画
- flexdashboard - Flexdashboard 布局在 4 个方块中设置一个作为选项卡集
- mysql - 如何将一列的列值组合到 MySQL 中的另一列中?
- node.js - 我正在尝试运行 npm install 但它给了我奇怪的错误
- c# - 尽管数据被正确传递,但记录没有添加到 SQL Server?(ASP.NET WEB API 和 Angular)
- javascript - 页面重新加载时,Tweenmax 不透明度会在短时间内保持为 1
- python - Vscode keras intellisense(建议)无法正常工作
- javascript - 在 onClick 的反应调用 setTimeout 似乎不等待
- r - 如何在 R 中生成的地图中插入更多颜色
- vbscript - VBS - 定义数组