我的数组如下:
let arr = [
{type: "Benzine", active: false},
{type: "Diesel", active: false},
{type: "Electricity", active: false}
]
我有一个函数,我想获得该数组的属性active
的值:
function isChecked(filterName) {
return arr.filter(f => f.type === filterName).map(c => c.active)[0];
}
效果很好,最后有[0]
。有没有办法在最后没有[0]
的情况下显示活动属性值?
答案 0 :(得分:3)
不,只要你使用filter
,就没有了。
[0]
用于从该过滤器获取第一个结果。
由于您只是返回active
的值,您可以使用Array.prototype.some
,而不是:
let arr = [
{type: "Benzine", active: false},
{type: "Diesel", active: false},
{type: "Electricity", active: true}
];
function isChecked(filterName){
// Is there an element in the array that matches the filter AND is active?
return arr.some(f => f.type === filterName && f.active);
}
console.log("Diesel:", isChecked("Diesel"));
console.log("Electricity:", isChecked("Electricity"));

答案 1 :(得分:1)
您可以使用find
来获取数组的第一个匹配元素,而不是使用filter
。
function isChecked(filterName) {
var elem = arr.find(f => f.type === filterName);
return elem ? elem.active : false;
}