具有多个参数的 indexOf
indexOf with multiple arguments
在数组上确定 indexOf
时是否可以使用多个参数?
我想确定我的数组是否包含三个整数中的任何一个。在此阶段需要注意的重要一点是,该数组 只有 有一个值(如果有更多值,则不会到达此代码块)。
array.indexOf(123 || 124 || 125) === 0
所以如果 array = [123]
那么我的 indexOf
应该是 0
因此 true
.
如果 array = [124]
那么我的 indexOf
应该是 0 因此 true
.
我发现发生的事情是 [123]
工作正常,但它甚至懒得检查 indexOf
的第二个或第三个参数,只是返回 false。
||
运算符 returns 左侧如果为真,否则 returns 右侧。 123 || 124 || 125
就意味着 123
.
如果要测试数组中是否有多个值,则必须依次测试每个值。
array.indexOf(123) == 0 || array.indexOf(124) == 0 || array.indexOf(125) == 0
因为你只关心数组的一个特定索引,你可以把整个事情颠倒过来:
[123, 124, 125].indexOf(array[0]) > -1
您可以使用 Array.some()
执行此操作。
这种方法的好处是您只需遍历数组一次。如果您 ||
多个 indexOf()
一起调用,您将在每次错过搜索时继续迭代数组。
function checkArray(array) {
return array.some(function(item) {
return item == 123 || item == 124 || item == 125;
});
};
console.log(checkArray([123, 456, 789]));
console.log(checkArray([456, 789]));
console.log(checkArray([789, 456, 125]));
如果您想获得多个结果,另一种方法是 Array.prototype.filter()
。但是这将 return 你对象本身。如果您对指数感兴趣,那么您必须将它与 Array.prototype.reduce()
结合起来,例如;
var a = [1,2,3],
b = a.filter(e => e === 1 || e === 2)
.reduce((p,c) => p.concat(a.indexOf(c)),[]);
console.log(b);
在数组上确定 indexOf
时是否可以使用多个参数?
我想确定我的数组是否包含三个整数中的任何一个。在此阶段需要注意的重要一点是,该数组 只有 有一个值(如果有更多值,则不会到达此代码块)。
array.indexOf(123 || 124 || 125) === 0
所以如果 array = [123]
那么我的 indexOf
应该是 0
因此 true
.
如果 array = [124]
那么我的 indexOf
应该是 0 因此 true
.
我发现发生的事情是 [123]
工作正常,但它甚至懒得检查 indexOf
的第二个或第三个参数,只是返回 false。
||
运算符 returns 左侧如果为真,否则 returns 右侧。 123 || 124 || 125
就意味着 123
.
如果要测试数组中是否有多个值,则必须依次测试每个值。
array.indexOf(123) == 0 || array.indexOf(124) == 0 || array.indexOf(125) == 0
因为你只关心数组的一个特定索引,你可以把整个事情颠倒过来:
[123, 124, 125].indexOf(array[0]) > -1
您可以使用 Array.some()
执行此操作。
这种方法的好处是您只需遍历数组一次。如果您 ||
多个 indexOf()
一起调用,您将在每次错过搜索时继续迭代数组。
function checkArray(array) {
return array.some(function(item) {
return item == 123 || item == 124 || item == 125;
});
};
console.log(checkArray([123, 456, 789]));
console.log(checkArray([456, 789]));
console.log(checkArray([789, 456, 125]));
如果您想获得多个结果,另一种方法是 Array.prototype.filter()
。但是这将 return 你对象本身。如果您对指数感兴趣,那么您必须将它与 Array.prototype.reduce()
结合起来,例如;
var a = [1,2,3],
b = a.filter(e => e === 1 || e === 2)
.reduce((p,c) => p.concat(a.indexOf(c)),[]);
console.log(b);