我需要学习如何将关联数组传递给函数,以便我可以在函数中执行以下操作:
function someName($argums) {
if (gettype($argums) != 'array' ||
!array_key_exists('myOneKey', $argums) ||
!array_key_exists('myOtherKey', $argums)) {
return false;
}
/*do other stuff*/
}
(这就是我在PHP中用JavaScript做的方式。)
答案 0 :(得分:6)
所有Javascript对象都是关联数组,所以这很容易。您实际上有几个选项,因为对象可以拥有自己的属性,从原型对象继承的属性,具有未定义值的属性以及具有“falsey”值的属性(undefined
,null
, 0
,""
,当然还有false
)。 (对象没有属性并且具有未定义值的对象之间存在差异。)
检查对象是否具有属性本身:您使用obj.hasOwnProperty
:
function someName(obj) {
if (!obj ||
!obj.hasOwnProperty('myOneKey') ||
!obj.hasOwnProperty('myOtherKey'))
return false;
}
// Do other stuff
}
通过原型检查对象是否具有属性本身或:您使用propName in obj
:
function someName(obj) {
if (!obj ||
!('myOneKey' in obj) ||
!('myOtherKey' in obj))
return false;
}
// Do other stuff
}
检查对象是否具有属性(直接或通过原型)并且它未定义:您查找未定义的值:
function someName(obj) {
if (!obj ||
typeof obj.myOneKey === "undefined" ||
typeof obj.myOtherKey === "undefined")
return false;
}
// Do other stuff
}
检查该属性是否为假(undefined
,null
,0
,""
,当然还有false
),无论为什么:只需使用!
:
function someName(obj) {
if (!obj ||
!obj.myOneKey ||
!obj.myOtherKey)
return false;
}
// Do other stuff
}
无论如何,用法:
var obj = {
myOneKey: 'fred',
myOtherKey: 'barney'
};
someName(obj);