【问题标题】:How to find element of parent and store in array?如何找到父元素并存储在数组中?
【发布时间】:2014-05-12 02:47:01
【问题描述】:

你能告诉我如何在不同的数组中分离父节点和子节点吗?

我有三个父节点:"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"

当数组为["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"]

【问题讨论】:

  • 在不同的数组中分离”到底是什么意思?您想“在数组中查找给定父 ID 的直接子代”吗?

标签: javascript jquery arrays


【解决方案1】:

如果我理解的很好,你可以使用

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();    
}

Demo

或者,使用正则表达式和 ES5 数组方法:

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

Demo

如果要在开头添加剩余项,

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());    
}

Demo

【讨论】:

  • @orial 你的 50% awswe 是正确的,但它没有排序
  • 答案是 0:“a_1” 1:“a_3” 2:“a_2”..预期是“a_1”、“a_2”、“a_3”
  • @user3530755 如果要排序,加.sort()即可。
  • 感谢帮助。我们可以在数组的开头添加剩余元素
  • [a_1,a_2,a_3] 直到现在这个输出。我们可以添加 a_2_3,c_3 在任何 oder 开始。专家输出是 [a_2_3,c_3,a_1,a_2,a_3] 或 [ c_3,a_2_3,a_1,a_2,a_3]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 2012-10-12
  • 2019-08-16
  • 2017-10-25
  • 1970-01-01
  • 2011-07-02
  • 1970-01-01
相关资源
最近更新 更多