如何指定数组的多个索引值而不遍历所有索引值?
我有一个数组:var boxArray = $('.box').toArray();
。我有 9 个 box
类元素,因此该数组由索引值 [0, 1, 2, 3, 4, 5, 6, 7, 8]
.
如果[0]
、[4]
和[8]
的boxArray
索引值都是给定一个 clicked
类,我希望发生一些事情。我知道我可以使用 for
循环来迭代整个数组,并且我知道我可以仅引用一个索引值 (boxArray[0]
),但是我该如何一次表示多个无序索引值?
$(boxArray[0, 4, 8])
不起作用 - 仅识别最后一个索引值。 $(boxArray[0][4][8])
不起作用
在 JavaScript 和 jQuery 中执行此操作的唯一方法是一次引用它们吗?理想情况下,我希望能够做这样的事情:
if ($(boxArray[0, 4, 8]).hasClass(‘clicked’)) {
// do something;
}
而不是
if ($(boxArray[0]).hasClass('clicked') &&
$(boxArray[4]).hasClass('clicked') &&
$(boxArray[8]).hasClass('clicked')
) {
// do something
}
最佳答案
您可以使用Array.prototype.every() :
The every() method tests whether all elements in the array pass the test implemented by the provided function.
代码片段:
var boxArray = $('.box').toArray();
var result = [1, 2, 4].every(function(element, index, array) {
return boxArray[element].classList.contains('clicked');
});
console.log(result);
result = [0, 2, 4].every(function(element, index, array) {
return boxArray[element].classList.contains('clicked');
});
console.log(result);
//
if ([0, 2, 4].every( (ele) => {return $(ele).has('.clicked');})) {
console.log('test passed');
} else {
console.log('test not passed');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="box clicked">box</button>
<button class="box">box</button>
<button class="box clicked">box</button>
<button class="box">box</button>
<button class="box clicked">box</button>
<button class="box">box</button>
<button class="box">box</button>
<button class="box">box</button>
关于javascript - 如何在不使用for循环的情况下引用数组的多个索引值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42487187/