代码之家  ›  专栏  ›  技术社区  ›  Pritam Bohra

匹配空对象数组

  •  0
  • Pritam Bohra  · 技术社区  · 5 年前

    我必须在JavaScript代码中匹配以下条件:

    var a = [{}];
    
    if (a === [{}]) {
      console.log('True');
    } else {
      console.log('False');
    }

    它总是打印 False ,为什么?

    1 回复  |  直到 5 年前
        1
  •  4
  •   Maheer Ali    5 年前

    如果要比较两个对象/数组,则只返回 true 如果它们在内存中有相同的引用。 [] 将创建一个具有不同引用的新数组,因此它不能与其他数组相等。

    console.log([] === []) //false
    
    let a = [];
    let b = a;
    //Now 'a' and 'b' have same reference
    
    console.log(a === b) //true

    length 属于 Object.keys() 它的第一个元素。

    var a = [{}];
    if (a.length === 1 && typeof a[0] === "object" && Object.keys(a[0]).length === 0) {
       console.log('True');
    } else {
       console.log('False');
    }

    JSON.stringify()

    var a = [{}];
    if (JSON.stringify(a) === '[{}]') {
       console.log('True');
    } else {
       console.log('False');
    }