Javascript-检查数组是否仅包含指定值

gig*_*igs 1 javascript arrays

如何优化检查数组是否仅包含指定值而不使用硬编码值的函数?

这是功能

function containOnly(value1, value2, array){
  var result;

  for(i = 0; i < array.length; i++){
    if(array[i] != value1 && array[i] != value2){
      result = 0;
      break;
    } else
      result = 1;
  }

  if(result === 0)
    return false;
  else
    return true;
}

console.log(containOnly(1, 2, [2,1,2]));
Run Code Online (Sandbox Code Playgroud)

如果数组包含指定值,则此函数将返回true。在此函数中,我使用if语句比较两个值,但是如果要使用两个以上的值,如何使用值的数组而不是变量?例如:

console.log(containOnly([1, 2, 3], [2,1,2,3,5]));
Run Code Online (Sandbox Code Playgroud)

Mih*_*nut 5

您可以every通过将arrow函数作为参数来使用method 来满足您的要求。

每一个()方法测试是否阵列中的所有元件由通过所提供的功能来实现的测试。

function containsOnly(array1, array2){
  return array2.every(elem => array1.includes(elem))
}
console.log(containsOnly([1, 2, 3], [2,1,2,3,5]));
console.log(containsOnly([1, 2], [2,1,2,1,1]));
Run Code Online (Sandbox Code Playgroud)

另一种解决方法是使用some方法。

function containsOnly(array1, array2){
  return !array2.some(elem => !array1.includes(elem))
}
console.log(containsOnly([1, 2, 3], [2,1,2,3,5]));
console.log(containsOnly([1, 2], [2,1,2,1,1]));
Run Code Online (Sandbox Code Playgroud)