回答編集履歴
1
情報の追加。
answer
CHANGED
@@ -20,4 +20,29 @@
|
|
20
20
|
}, tm );
|
21
21
|
}
|
22
22
|
console.log( seek( datas ) );
|
23
|
-
```**動くサンプル:**[https://jsfiddle.net/12h5j2rm/](https://jsfiddle.net/12h5j2rm/)
|
23
|
+
```**動くサンプル:**[https://jsfiddle.net/12h5j2rm/](https://jsfiddle.net/12h5j2rm/)
|
24
|
+
|
25
|
+
---
|
26
|
+
|
27
|
+
**追記:**
|
28
|
+
|
29
|
+
再起しないやつもついでに。
|
30
|
+
|
31
|
+
```JavaScript
|
32
|
+
var datas=[{name:'html',children:[{name:'head',children:[{name:'meta',children:[-3,-2,-1]},{name:'title',children:[0,1,2]}]},{name:'head',children:[{name:'meta',children:[3,4,5]},{name:'title',children:[6,7,8]}]}]}];
|
33
|
+
function seekWhile( ar ) {
|
34
|
+
var tm = [], crr;
|
35
|
+
while( ar.length ) {
|
36
|
+
crr = ar.shift();
|
37
|
+
if ( crr.hasOwnProperty( 'name' ) && crr.hasOwnProperty( 'children' ) ) {
|
38
|
+
if ( crr.name === 'title' ) {
|
39
|
+
tm.push( crr.children );
|
40
|
+
} else {
|
41
|
+
Array.prototype.push.apply( ar, crr.children );
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
45
|
+
return tm;
|
46
|
+
}
|
47
|
+
console.log( 'seekWhile:', seekWhile( datas ) );
|
48
|
+
```**動くサンプル:**[https://jsfiddle.net/12h5j2rm/1/](https://jsfiddle.net/12h5j2rm/1/)
|