const cars = [{
brand: 'BMW',
year: '1997'
}, {
brand: 'BMW',
year: '2011'
}]
Object.keys(cars).forEach(function(x) {
if (cars[x].brand == "BMW") {
console.log(cars[x]);
}
});
我如何仅在console.log中使用该阵列的第一个对象与品牌“宝马”相匹配? *它必须是具有对象键的解决方案
答案 0 :(得分:2)
用户 array.find
,它只返回第一个匹配的元素。
const cars = [{
brand: 'BMW',
year: '1997'
}, {
brand: 'BMW',
year: '2011'
}]
console.log(cars.find(car=>car.brand ==='BMW'));

修改强>
由于您需要使用Object.Keys的解决方案,因此可以使用array.some()
const cars = [{
brand: 'BMW',
year: '1997'
}, {
brand: 'BMW',
year: '2011'
}]
Object.keys(cars).some(function(ele) {
if (cars[ele].brand == "BMW") {
console.log(cars[ele]);
return true;
}
});

答案 1 :(得分:0)
使用Array.prototype.find()
的上述答案绝对是您正在寻找的。
但是,如果在其他情况下遇到此问题:当您使用for循环,并且想要提前结束循环时,可以使用" break"关键词。
break关键字不能与forEach
一起使用,但是你不应该使用forEach--它拥有较少的浏览器支持并且比旧式的for循环慢。
答案 2 :(得分:0)
您可以选择Array#some
,如果找到品牌返回true
- 那么迭代就会停止。
const cars = [{ brand: 'BMW', year: '1997' }, { brand: 'BMW', year: '2011' }];
Object.keys(cars).some(function(x) {
if (cars[x].brand == "BMW") {
console.log(cars[x]);
return true;
}
});

答案 3 :(得分:0)
它会对你有所帮助
var Exception = {};
const cars = [{
brand: 'BMW',
year: '1997'
}, {
brand: 'BMW',
year: '2011'
}]
try{
Object.keys(cars).forEach(function(x) {
if (cars[x].brand == "BMW") {
console.log(cars[x]);
throw Exception;
}
});
}catch(e){
if (e !== Exception) throw e;
}
答案 4 :(得分:0)
您可以使用Object.keys(cars).find(function)
,如下所示:
const cars = [{
brand: 'BMW',
year: '1997'
}, {
brand: 'BMW',
year: '2011'
}]
Object.keys(cars).find(function(x) {
if (cars[x].brand == "BMW") {
console.log(cars[x]);
return true;
}
});