Javascript 当两个对象匹配if语句时,如何仅获取第一个对象

Javascript 当两个对象匹配if语句时,如何仅获取第一个对象,javascript,Javascript,const cars=[{ 品牌:“宝马”, 年份:1997年 }, { 品牌:“宝马”, 年份:2011年 }] 对象。键(车)。forEach(函数(x){ 如果(汽车[x]。品牌==“宝马”){ 控制台日志(cars[x]); } });用户数组。查找,它将只返回第一个匹配的元素 const cars=[{ 品牌:“宝马”, 年份:1997年 }, { 品牌:“宝马”, 年份:2011年 }] console.log(cars.find(car=>car.brand=='BMW')以上使

const cars=[{
品牌:“宝马”,
年份:1997年
}, {
品牌:“宝马”,
年份:2011年
}]
对象。键(车)。forEach(函数(x){
如果(汽车[x]。品牌==“宝马”){
控制台日志(cars[x]);
}

});
用户
数组。查找
,它将只返回第一个匹配的元素

const cars=[{
品牌:“宝马”,
年份:1997年
}, {
品牌:“宝马”,
年份:2011年
}]

console.log(cars.find(car=>car.brand=='BMW')
以上使用
Array.prototype.find()
的答案绝对是您想要的

但是,如果您在其他情况下遇到此问题:当您使用for循环时,并且希望提前结束循环,那么可以使用“break”关键字

break关键字不适用于
forEach
,但是无论如何,您不应该使用forEach——它的浏览器支持较少,并且比老式的for循环慢。

您可以使用,如果发现品牌返回
true
,则迭代停止

const cars=[{品牌:'BMW',年份:'1997'},{品牌:'BMW',年份:'2011'}];
对象。钥匙(汽车)。一些(功能(x){
如果(汽车[x]。品牌==“宝马”){
控制台日志(cars[x]);
返回true;
}

});这将对您有所帮助

var异常={};
常数车=[{
品牌:“宝马”,
年份:1997年
}, {
品牌:“宝马”,
年份:2011年
}]
试一试{
对象。键(车)。forEach(函数(x){
如果(汽车[x]。品牌==“宝马”){
控制台日志(cars[x]);
抛出异常;
}
});
}捕获(e){
如果(e!==异常)抛出e;

}
您可以使用
对象.键(汽车).查找(功能)
如下所示:

const cars=[{
品牌:“宝马”,
年份:1997年
}, {
品牌:“宝马”,
年份:2011年
}]
对象。键(车)。查找(函数(x){
如果(汽车[x]。品牌==“宝马”){
控制台日志(cars[x]);
返回true;
}

});
OP说“它必须是一个带有object.keys()的解决方案”@AndrewLohr是的,但我不确定OP为什么需要:)是的,对于上面的代码,他只需要添加一个检查
cars
是一个数组。为什么要使用
Object.keys()
?哦,这就是我要找的,好吧,很简单,呵呵。谢谢!:)
Array.prototype.find()
是解决方案,但您建议不要使用
.forEach()
,因为它支持浏览器?O.O
.forEach()
在每个浏览器中都可用,而
查找()
not我实际上不知道find没有得到很好的支持,因为我没有真正使用它。我真的建议只使用for循环和break,并且只接受find,因为另一个用户已经提到了它,这是OP问题的确切方法。