![](/img/trans.png)
[英]how to find an element in one of three array and then return the parent array name?
[英]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"
,...都是相同的...每個節點都有子級。
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.