indexOf有多个参数

时间:2016-08-17 15:00:12

标签: javascript arrays indexof

在确定阵列上的@Autowired private MultipartProperties multipartProperties = new MultipartProperties(); @Bean public MultipartResolver multipartResolver() { LOG.debug("initializing MultipartResolver"); MultipartConfigElement config = multipartProperties.createMultipartConfig(); CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); multipartResolver.setResolveLazily(true); multipartResolver.setMaxUploadSize(config.getMaxRequestSize()); multipartResolver.setMaxUploadSizePerFile(config.getMaxFileSize()); return multipartResolver; } 时是否可以使用多个参数?

我想确定我的数组是否包含三个整数中的任何一个。在此阶段需要注意的是,数组具有一个值(如果它有更多值,则不会到达此代码块)。

indexOf

因此,如果array.indexOf(123 || 124 || 125) === 0 ,那么我的array = [123]应为indexOf,因此0

如果true,那么我的array = [124]应为0,因此indexOf

我发现正在发生的事情是true工作正常但是它甚至没有费心去检查[123]第二个或第三个参数,并且只是返回false。

http://codepen.io/anon/pen/WxmyGp?editors=0011

3 个答案:

答案 0 :(得分:10)

||运算符返回左侧(如果为true),否则返回右侧。 123 || 124 || 125仅表示123

如果要测试数组中是否有多个值,则必须依次测试每个值。

array.indexOf(123) == 0 || array.indexOf(124) == 0 || array.indexOf(125) == 0 

由于你只关心数组的一个特定索引,所以你可以将整个事情放在首位:

[123, 124, 125].indexOf(array[0]) > -1

答案 1 :(得分:3)

您可以使用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]));




答案 2 :(得分:-1)

如果您想获得多个结果,另一种方法是Array.prototype.filter()。这将返回对象本身。如果您对索引感兴趣,那么您必须将其与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);