d3选择集合的操作方法(四):sort与order

      sort方法只能对带有数据的元素进行排序,因此如果对页面已有的元素但没有绑定数据的元素进行排序,则需要进行预处理,order能将已排序的元素但已改变顺序的元素(如通过raise与lower方法)恢复为排序初始状态,并且性能表现更佳。
依旧假定页面中存在的html元素如下:

<ul class="list-group" id="list-group">
    <li class="list-group-item">0002</li>
    <li class="list-group-item">0001</li>
    <li class="list-group-item">0003</li>
</ul>

      说明sort与order使用方法的示例代码如下:

var items = d3.select("#list-group")
                .selectAll(".list-group-item")
                //  对元素进行预处理
                .each(function(d) {
                    //  为已有的元素添加数据
                    if(d === undefined) {
                        d3.select(this).datum({
                            index : parseInt(this.textContent)
                        })
                    }
                })
                //  只能比较数据,并且会改变数据相关的DOM
                .sort(function(a, b) {
                    //  逆序
                    return b.index - a.index;
                })

      执行完上面的代码后,现在html元素已经是逆序排列了,如下:

<ul class="list-group" id="list-group">
    <li class="list-group-item">0003</li>
    <li class="list-group-item">0002</li>
    <li class="list-group-item">0001</li>
</ul>

      通过raise与lower改变html元素的排序,然后再用order将排序恢复,如下:

//  将第二个元素提前
items.filter(function(d) {
    return d.index === 2
}).lower();
//  又恢复为逆序了,速度极快
items.order();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值