假设我有一个名为的对象a
,我该如何检查是否a
具有多个速记的特定列表,我认为可以在逻辑运算符中使用它来完成,
像这样的东西:
var a = {prop1:{},prop2:{},prop3:{}};
if ({1:"prop1",2:"prop2",3:"prop3"} in a)
console.log("a has these properties:'prop1, prop2 and prop3'");
编辑
如果普通的javascript无法解决问题,jQuery会帮上忙,但我更喜欢javascript
编辑2
可移植性是特权
最简单的方法是使用常规方法&&
:
if ("prop1" in a && "prop2" in a && "prop3" in a)
console.log("a has these properties:'prop1, prop2 and prop3'");
这不是“简写”,但没有比您建议的时间长。
您还可以将要测试的属性名称放置在数组中,并使用every
方法:
var propertiesToTest = ["prop1", "prop2", "prop3"];
if (propertiesToTest.every(function(x) { return x in a; }))
console.log("a has these properties:'prop1, prop2 and prop3'");
但是请注意,这是ECMAScript 5中引入的,因此在某些较旧的浏览器中不可用。如果这是一个问题,您可以提供自己的版本。这是MDN的实现:
if (!Array.prototype.every) {
Array.prototype.every = function(fun /*, thisp */) {
'use strict';
var t, len, i, thisp;
if (this == null) {
throw new TypeError();
}
t = Object(this);
len = t.length >>> 0;
if (typeof fun !== 'function') {
throw new TypeError();
}
thisp = arguments[1];
for (i = 0; i < len; i++) {
if (i in t && !fun.call(thisp, t[i], i, t)) {
return false;
}
}
return true;
};
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句