如何优化检查数组是否仅包含指定值而不使用硬编码值的函数?
这是功能
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)
您可以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)