var hasInfoNodes=scope.nodedata=splitDatas.filter(function(element,index,array) {
return ([7,13,17,23,30].indexOf(parseInt(element.nodeIndex)) > -1);
});
如代码,是从数组splitDatas中过滤出来我想要的几个对象,这里根据对象的nodexIndex 获取,[7,13,17,23,30],只要包含这个nodexIndex,就放进hasInfoNodes中。
现在问题来了,但是splitDatas中不一定完全有7,13,17,23,30这几个,那么,我该如何设置,当splitDatas中没有某个对象时候,比如,没有13,30设置其为
{nodeIndex:"13",nodeStatus:"0"}
{nodeIndex:"30",nodeStatus:"0"}
放进hasInfoNodes里面。而且最终要按照nodeIndex的大小排列好hasInfoNodes的对象呢,也就是,最终一定有[7,13,17,23,30]这个几个对象,这里面的数字就是对象的nodeIndex
问题简单来说就是在
splitDatas
里面找和自定义数组arr[7,13,17,23,30]
的交集,如果splitDatas
没有的则使用arr
进行填充。所以我用
arr
来循环,然后找和splitDatas
的交集,如果没有,则使用arr
的值来填充,简单的说:求交集,给交集补数据。代码还有更多优化的空间,大体思路如此。
---- update
想了下换了一种思路做,先找到
arr
和splitDatas
的差集temp
,然后把temp
的格式和splitDatas
对齐(转换成一致),再把temp
和splitDatas
连接,最终排序即可,简单的说:求差集,给差集补数据。