如何检查某个对象是否是JavaScript数组中唯一的对象?

时间:2017-06-21 23:34:32

标签: javascript jquery

if (myArray contains only myObject) {
    //Do stuff...
} else {
    //Do different stuff...
}

如果if (myArray contains only myObject)行实际检查myArray是否仅包含myObject,我应该怎么做?

对象不会多次出现在数组中,并且只在位置1(不是位置0)。所以,使用myArray.length不会有帮助(也许?)。

我使用.splice将对象添加到位置1的myArray中,因此位置0应该是未定义的。

3 个答案:

答案 0 :(得分:0)

你想检查两个条件:

首先,数组的长度只能是2(因为我们在实例1中有对象)

第二,第一个索引必须是未定义的。 所以

if(myArray.length ==2 && myArray[0] === undefined &&(myArray[1] == myObject)){
//some code
}else{
//some other code
}

编辑:只是一个注释,我们仍然可以利用数组长度,因为我们知道我们设置的索引是[1] 即。 [undefined,{our object}];

答案 1 :(得分:0)

根据您的问题,我只能推断出您想要的以下内容

  1. 特定对象不应多次出现在数组中。
  2. 数组的长度不应大于2,这将是 回答你可能只想要数组中的对象,但第一个 元素可以是未定义的。
  3. 这样做的正确方法是:

    let myArray = [undefined, "object", "object"];
    //check that myArray only contains "object"
    //1: The "object" should not be in the array more than once
    //2: I presume you also want the array length not to be greater than 2
    console.log(containsObjectOnly("object", myArray));
    
    function containsObjectOnly(obj, myArray) {
      var isOnly = false;
      let xTimes = 0;
      let found = myArray.filter((value) => {
        if (value == obj && xTimes === 0) {
          isOnly = true;
          xTimes++;
        } else if (xTimes > 0 && value == obj) {
          isOnly = false;
        }
        return isOnly;
      });
      return isOnly && !(myArray.length > 2);
    }

答案 2 :(得分:-2)

if (myArray.length === 1 && JSON.stringify(myObject) === JSON.stringify(myArray[0])) {
    console.log("myObject is in here, and it's the only element!");
}
else {
    console.log('nope!');
}