gpt4 book ai didi

javascript - 遍历对象以检查返回 true 的函数

转载 作者:行者123 更新时间:2023-11-29 17:53:53 24 4
gpt4 key购买 nike

我有一个这样的对象:

var BrowserDetect = {
uniqueProps: [],
browserUID: '',
browserFonts: '',
isIPhonePad: function() {
return navigator.userAgent.match(/iPhone|iPod/i);
},
isDesktop: function() {
return !navigator.userAgent.match(/iPhone|iPad|android/i);
},
isAndroid: function() {
return navigator.userAgent.match(/android/i);
},
isFirefox: function() {
return navigator.userAgent.match(/firefox/i);
},
isIOS7: function() {
return navigator.userAgent.match(/.*CPU.*OS 7_\d/i);
},
isChromeCrios: function() {
return navigator.userAgent.match(/chrome|crios/i);
},
isIPad: function() {
return navigator.userAgent.match(/iPad/i);
}
}

(仅供引用:对象内部还有更多功能)

所以我想遍历“BrowserDetect”并检查其中哪些函数返回“true”并获取函数的名称。

实现该目标的简单方法是什么?我尝试使用 jquery $.each,但没有成功。

最佳答案

使用 Object.keys()Array#filter 迭代对象并返回所有真实的函数名称:

Object.keys(BrowserDetect).filter(function(key) {
var f = BrowserDetect[key];

return typeof f === 'function' && f();
});

var BrowserDetect = {
uniqueProps: [],
browserUID: '',
browserFonts: '',
isIPhonePad: function() {
return navigator.userAgent.match(/iPhone|iPod/i);
},
isDesktop: function() {
return !navigator.userAgent.match(/iPhone|iPad|android/i);
},
isAndroid: function() {
return navigator.userAgent.match(/android/i);
},
isFirefox: function() {
return navigator.userAgent.match(/firefox/i);
},
isIOS7: function() {
return navigator.userAgent.match(/.*CPU.*OS 7_\d/i);
},
isChromeCrios: function() {
return navigator.userAgent.match(/chrome|crios/i);
},
isIPad: function() {
return navigator.userAgent.match(/iPad/i);
}
};

var result = Object.keys(BrowserDetect).filter(function(key) {
var f = BrowserDetect[key];

return typeof f === 'function' && f();
});

console.log(result);

关于javascript - 遍历对象以检查返回 true 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40920661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com