Javascript 在数组中循环并获取上一个值时第一个项的特殊情况?

Javascript 在数组中循环并获取上一个值时第一个项的特殊情况?,javascript,ecmascript-6,Javascript,Ecmascript 6,我目前正在这样做,存储每个项目的高度,以便以后通过css访问它: children[0].style.setProperty('--previousHeight', 0+'px'); children.forEach((child, i) => { if(i > 0 ){ var height = children[i-1].offsetHeight; child.style.setProperty('--previousHeight', he

我目前正在这样做,存储每个项目的高度,以便以后通过
css
访问它:

children[0].style.setProperty('--previousHeight', 0+'px');
children.forEach((child, i) => {
    if(i > 0 ){
        var height = children[i-1].offsetHeight;
        child.style.setProperty('--previousHeight', height+'px');
    }
})
我想把第一件事和另一件事更像一次。差不多

height = offsetHeight || 0;
但我不确定如何以一种易于阅读的方式做到这一点

应该是:

children.forEach((child,i)=>{
变量高度=儿童[i-1]&&children[i-1]。离视| | 0;
setProperty('--previousHeight',height+'px');
})
如果您不熟悉:

var height = children[i-1] && children[i-1].offsetHeight || 0;
结果如下:

var height = children[i-1] ? children[i-1].offsetHeight : 0;
应该是:

children.forEach((child,i)=>{
变量高度=儿童[i-1]&&children[i-1]。离视| | 0;
setProperty('--previousHeight',height+'px');
})
如果您不熟悉:

var height = children[i-1] && children[i-1].offsetHeight || 0;
结果如下:

var height = children[i-1] ? children[i-1].offsetHeight : 0;

这应该是最快最干净的方法

<div id='myElement'>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</diV>
<script>
    var children = document.getElementById('myElement').children;
    var h = children[0].offsetHeight;
    for(var i in children){
        if( i > 0 ){
            children[i].style['height'] = h;
            children[i].style.setProperty('--previousHeight', h);                
        }            
    }
</script>

var children=document.getElementById('myElement').children;
var h=子项[0]。视线外;
for(儿童中的变量i){
如果(i>0){
儿童[i].style['height']=h;
children[i].style.setProperty('--previousHeight',h);
}            
}

这应该是最快捷、最干净的方法

<div id='myElement'>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</diV>
<script>
    var children = document.getElementById('myElement').children;
    var h = children[0].offsetHeight;
    for(var i in children){
        if( i > 0 ){
            children[i].style['height'] = h;
            children[i].style.setProperty('--previousHeight', h);                
        }            
    }
</script>

var children=document.getElementById('myElement').children;
var h=子项[0]。视线外;
for(儿童中的变量i){
如果(i>0){
儿童[i].style['height']=h;
children[i].style.setProperty('--previousHeight',h);
}            
}

这就是我最后要做的:

    children.forEach((child, i) => {
        var height = 0 
        if(i > 0 ){
            var height = children[i-1].offsetHeight;
        }
        child.style.setProperty('--previousHeight', height+'px');
    })

这就是我最后做的:

    children.forEach((child, i) => {
        var height = 0 
        if(i > 0 ){
            var height = children[i-1].offsetHeight;
        }
        child.style.setProperty('--previousHeight', height+'px');
    })

因为我希望值是上一个子级的值,对于I=0没有值。
if(I>0){…}else{…}
所以你想在索引0的第一个子级上设置--previousHeight,值为0px?因为我希望值是上一个子级的值,对于I=0没有值。
if(I>0){…}else{…}
那么您想在索引0的第一个子级上设置--previousHeight,值为0px?这不起作用,因为没有为第一次迭代定义child i=[0-1]确切地说,它是未定义的,
children[i-1]&&children[i-1]。偏移| | 0
的计算结果为0没有错误,我想您的意思是
height=children[i-1]?children[i-1]。越界:0
计算为
false
true
@Noface它做的事情与Faly wrote做的事情相同。这不起作用,因为没有为第一次迭代定义children=[0-1]确切地说,它是未定义的,
children[i-1]和&children[i-1].offsetHeight | | 0
计算结果为0不假,我想你的意思是
height=children[I-1]?children[I-1]。offsetHeight:0
计算结果为
false
true
@Noface它做的事情与Faly wrote和
子对象[0]相同。style.setProperty('--previousHeight',0+'px');
子对象[0].style.setProperty('--previousHeight',0+'px');