indexOf但是对象?

时间:2016-08-18 01:42:36

标签: javascript arrays object indexof

我想查看一个对象,并将它的每个属性分配给一个变量。

有4种可能的属性。一些对象全部为4.有些可能只有两个。

如何检查特定属性是否存在?对于数组是否有等效的indexOf()而是对象?

4 个答案:

答案 0 :(得分:3)

使用in关键字:

"key" in object

返回truefalse,具体取决于对象或其原​​型链中的任何内容是否具有该属性。

您还可以使用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

有关更多扩展示例,请参阅以下代码:

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:0)

&#13;
&#13;
list
&#13;
&#13;
&#13;

或在ES2015中

&#13;
&#13;
model = bigram_vectorizer.fit_transform([x])
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您可以使用解构分配。如果未定义值,则变量将设置为var row = table.insertRow(table.rows.length)。您还可以检查变量是否在解构后定义,然后通过引用确定undefined变量。

delete