我想查看一个对象,并将它的每个属性分配给一个变量。
有4种可能的属性。一些对象全部为4.有些可能只有两个。
如何检查特定属性是否存在?对于数组是否有等效的indexOf()而是对象?
答案 0 :(得分:3)
使用in
关键字:
"key" in object
返回true
或false
,具体取决于对象或其原型链中的任何内容是否具有该属性。
您还可以使用object.hasOwnProperty("key")
,如果对象具有true
作为其自身的属性,而不是其原型,则key
仅为var object = {};
"toString" in object; // true
object.hasOwnProperty("toString"); // false
。例如:
object
注意(根据@dandavis的评论)如果hasOwnProperty
有一个名为hasOwnProperty.call(object, "key")
的自定义属性,则会受到阻碍;要解决此问题,请使用var a = {hasOwnProperty: Boolean};
a.hasOwnProperty('name'); // true
hasOwnProperty.call(a, 'name'); // false
。例如:
sync.WaitGroup
答案 1 :(得分:1)
如果您只对直接在对象上设置的属性感兴趣(无法通过原型链访问),那么hasOwnProperty
将提供一个布尔值true
,如果对象具有指定的属性。< / p>
例如:如果testObject.hasOwnProperty('propertyToCheckFor')
存在,true
会返回testObject.propertyToCheckFor
,否则会false
。
有关更多扩展示例,请参阅以下代码:
var obj1 = {
a: 1
};
var obj2 = {
a: 1,
b: 2
};
var obj3 = {
b: 2,
c: 3
};
var obj4 = {
a: 1,
b: 2,
c: 3
};
// For dispaly purposes
document.write('<pre>' + JSON.stringify({
obj1: {
hasA: obj1.hasOwnProperty('a'),
hasB: obj1.hasOwnProperty('b'),
hasC: obj1.hasOwnProperty('c')
},
obj2: {
hasA: obj2.hasOwnProperty('a'),
hasB: obj2.hasOwnProperty('b'),
hasC: obj2.hasOwnProperty('c')
},
obj3: {
hasA: obj3.hasOwnProperty('a'),
hasB: obj3.hasOwnProperty('b'),
hasC: obj3.hasOwnProperty('c')
},
obj4: {
hasA: obj4.hasOwnProperty('a'),
hasB: obj4.hasOwnProperty('b'),
hasC: obj4.hasOwnProperty('c')
}
}, null, 2) + '</pre>');
&#13;
答案 2 :(得分:0)
list
&#13;
或在ES2015中
model = bigram_vectorizer.fit_transform([x])
&#13;
答案 3 :(得分:0)
您可以使用解构分配。如果未定义值,则变量将设置为var row = table.insertRow(table.rows.length)
。您还可以检查变量是否在解构后定义,然后通过引用确定undefined
变量。
delete