簡體   English   中英

如何找到父元素並存儲在數組中?

[英]How to find element of parent and store in array?

您能告訴我如何在不同的數組中分離父節點和子節點嗎?

我有三個父節點: "a""b""c"

  • "a"父節點具有以下子節點: "a_1""a_2""a_3" ,...等
  • "b"父節點具有以下子節點: "b_1""b_2""b_3" ,...等
  • "c"父節點具有以下子節點: "c_1""c_2""c_3" ,...等

現在。 "a-1"父節點也有這樣的子節點: "a_1_1""a_1_2""a_1_3" 對於"b_1""b_2" ,...都是相同的...每個節點都有子級。

http://jsfiddle.net/v34bh/1/

var arr=["a_1","c_3"];
var parent="a"

console.log(sortArray(parent,arr))
function sortArray(parent,arry){
    var a=new Array();
    for (var i=0;i<arry.length;i++){
        if(arry[i].indexOf('a')!=-1){
           a.push(arr[i]) 
        }
    }
    return a;

}

當數組很簡單時,我得到正確的結果。 因為它希望"a"子代預期輸出是"a_1"

當array為["a_1","a_a_1","c_3"]時,我的邏輯失敗。 預期輸出為["a_1"]因為我需要子級"a" 但是它來了["a_1","a_1_1"]

其次,當結果ID無法排序時,我的邏輯將失敗:當數組為["a_2","a_1","c_3"] 輸出結果為["a_2","a_1"] 預期的輸出["a_1","a_2"]

如果我理解得很好,您可以使用

function sortArray(parent,arry){
    var a = new Array();
    for (var i=0; i<arry.length; i++) {
        var pos = arry[i].lastIndexOf('_');
        if (arry[i].substring(0,pos) == parent)
           a.push(arry[i]);
    }
    return a.sort();    
}

演示版

或者,使用正則表達式和ES5數組方法:

function sortArray(parent,arry){
    var rg = new RegExp('^'+parent+'_\\d+$');
    return arry.filter(function(i){
        return rg.test(i);
    }).sort();
}

演示版

如果您想在開始時添加其余項目,

function sortArray(parent,arry){
    var arrs = [ [], [] ];
    for (var i=0;i<arry.length;i++){
        var pos = arry[i].lastIndexOf('_'),
            cond = arry[i].substring(0,pos) == parent;
        arrs[+cond].push(arry[i]);
    }
    return arrs[0].concat(arrs[1].sort());    
}

演示版

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM