Javascript数组速记

Javascript数组速记,javascript,arrays,loops,Javascript,Arrays,Loops,我只是想知道是否有一种写这段代码的速记方法: allJobs[0].style.display = 'none'; allJobs[1].style.display = 'none'; allJobs[3].style.display = 'none'; 我尝试了这种方法,但它只隐藏了最后一个值,而不是之前的值: allJobs[0, 1, 3].style.display = 'none'; 我不认为我真的可以使用经典的for循环解决方案,因为一些数组元素被跳过并显示。 谢谢 编辑: 我有

我只是想知道是否有一种写这段代码的速记方法:

allJobs[0].style.display = 'none';
allJobs[1].style.display = 'none';
allJobs[3].style.display = 'none';
我尝试了这种方法,但它只隐藏了最后一个值,而不是之前的值:

allJobs[0, 1, 3].style.display = 'none';
我不认为我真的可以使用经典的for循环解决方案,因为一些数组元素被跳过并显示。 谢谢

编辑: 我有3个以上的显示编号,我只是想让问题变得简单,我不是那么懒,写3行

[0, 1, 3].forEach(function(d) {
    allJobs[d].style.display = 'none';
});
虽然不可否认,只有三个要素,但这并不短


尽管无可否认,它只有三个元素,但并不短多少…

虽然其他示例将支持较新的浏览器,但它应该可以全面工作:

var indexes = [0, 1, 3];

for(var i = 0; i < indexes.length; i++) {
    allJobs[indexes[i]].style.display = 'none';
}
var索引=[0,1,3];
对于(var i=0;i
虽然其他示例将支持较新的浏览器,但这应该适用于所有浏览器:

var indexes = [0, 1, 3];

for(var i = 0; i < indexes.length; i++) {
    allJobs[indexes[i]].style.display = 'none';
}
var索引=[0,1,3];
对于(var i=0;i
以下是我的做法:

function setHidden() {
    for (var i = 0; i < arguments.length; i++) allJobs[arguments[i]].style.display = 'none';
}

setHidden(0, 1, 3);
函数setHidden(){
对于(var i=0;i

这种特殊的方法避免了对每个元素(如
Array.forEach
)进行代价高昂的函数调用。

以下是我的做法:

function setHidden() {
    for (var i = 0; i < arguments.length; i++) allJobs[arguments[i]].style.display = 'none';
}

setHidden(0, 1, 3);
函数setHidden(){
对于(var i=0;i

此特定方法避免了对每个元素(如
Array.forEach
)进行代价高昂的函数调用。

以下是另一种方法:

function setStyle(element, cssAttrib, cssValue) {
  element.style[cssAttrib] = cssValue;
}

var indexes = [ 0, 1, 3 ];
for ( var i = indexes.length-1; i > -1; i-- ) // Loop Backwards For Constant Comparison
{
  setStyle(allJobs[i], "display", "none");
}
请注意,调用setStyle会导致类似于forEach方法的函数调用惩罚。如果性能是一个问题,你可以考虑内联你的风格变化。
var indexes = [ 0, 1, 3 ];
for ( var i = indexes.length-1; i > -1; i-- ) // Loop Backwards For Constant Comparison
{
  allJobs[i].style.display = none;
}

以下是另一种方法:

function setStyle(element, cssAttrib, cssValue) {
  element.style[cssAttrib] = cssValue;
}

var indexes = [ 0, 1, 3 ];
for ( var i = indexes.length-1; i > -1; i-- ) // Loop Backwards For Constant Comparison
{
  setStyle(allJobs[i], "display", "none");
}
请注意,调用setStyle会导致类似于forEach方法的函数调用惩罚。如果性能是一个问题,你可以考虑内联你的风格变化。
var indexes = [ 0, 1, 3 ];
for ( var i = indexes.length-1; i > -1; i-- ) // Loop Backwards For Constant Comparison
{
  allJobs[i].style.display = none;
}


第一个例子有什么问题?这至少很清楚。我知道,但我有一大堆显示非,所以我想用一种更短的方式来写它们!供以后参考!您总是希望隐藏项0、1和3,还是有其他规则在起作用?@AdamAlexanderWilson:如果您使用jQuery,您可以只编写
$('selector').hide()
。第一个示例有什么问题?这至少很清楚。我知道,但我有一大堆显示非,所以我想用一种更短的方式来写它们!供以后参考!您总是希望隐藏项目0、1和3,还是有其他规则在起作用?@AdamAlexanderWilson:如果您使用jQuery,您可以只编写
$('selector')。hide()
…或者使用循环来隐藏相同的内容,是的。IE8和以下版本不支持
forEach
,因此如果您确实支持这些浏览器,你需要一个塑料填充。太好了!我还有更多我只是想把问题弄清楚,我确实试过了,但我一定是对代码有点不了解…或者对循环有点不了解,是的。IE8及以下版本不支持
forEach
,所以如果你真的支持那些浏览器,你就需要一个polyfill。太好了!我还有更多的问题,我只是想把问题弄清楚,我确实试过了,但是我一定是有点不喜欢用
中的
在数组上迭代?嗯,我从来不知道。谢谢。@Blender-我之所以说这不是一个好主意,是因为如果你传入的不是数组或带有附加属性的数组,那么它也会在循环中包含这些键……或者如果页面中的某些内容修改了数组。原型
。。。在
中使用
来迭代数组是个坏主意。@josh3736-删除了在中有问题的用法。只是让它变得不那么漂亮。在
中用
迭代数组?嗯,我从来不知道。谢谢。@Blender-我之所以说这不是一个好主意,是因为如果你传入的不是数组或带有附加属性的数组,那么它也会在循环中包含这些键……或者如果页面中的某些内容修改了数组。原型
。。。在
中使用
来迭代数组是个坏主意。@josh3736-删除了在中有问题的用法。只是让它不那么漂亮。