当2个对象匹配if语句时,如何只获取第一个对象

时间:2017-12-02 16:46:13

标签: javascript

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中使用该阵列的第一个对象与品牌“宝马”相匹配? *它必须是具有对象键的解决方案

5 个答案:

答案 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;
   }
});