![](/img/trans.png)
[英]How do i get all children (ie children of children) with Javascript?
[英]How to get all children of a subArray in Javascript
所以這是我的問題:
這就是我的數組的樣子,我在這里(從控制台窗口)顯示了它的一部分。
總體來說很基本吧? 除了它的索引。 如您所見,第一個的值為"1"
,第二個的值為"4"
。 至於子數組,它們也具有自定義索引。
因此,老式的:
for(i=0; i<array.length; i++){
someVar = array[i];
//do something
}
將無法正常工作。
我通過迭代另一個數組得到1或4,所以不需要獲取它們。
我想獲取所有subArrays(不是進一步嵌套的subArrays,僅是第二層)。
所以基本上我想要的是這樣的(是否有這樣的東西?):
array[someIndex].children.forEach(
//do something with **this**
)
為了讓您更實用:我知道第一個數組的index 1
。 如何在不知道cat1
和cat2
具有index 2
情況下獲取它們的值( cat1
,它也可以是6
或42
)。 在這種情況下,第一個數組只有一個subArray,但我想使其適用於多個subArray。 (為澄清cat1
,從第二級子cat2
選擇cat1
, cat2
,在這種情況下為index 2
)
在此先感謝您的幫助!
回聲
這些不是數組。 你有
[ { "1": { etc...
這是一個包含對象的數組,該對象包含多個其他對象。 您實際上不能for(i=...)
使用for(i=...)
循環,因為您的鍵不是順序的。 您應該改為使用for ... in
循環:
arr = [{"1":{....}}];
for (i in arr[0]) {
for (j in arr[0][i]) {
console.log(arr[0][i][j]['msg']);
}
}
使用Object.getOwnPropertyNames
可以獲取從小到大從小到大的順序。 迭代它們以獲得msg1
。
var array = {"1":{"3":{"5":{"data":"someData","moreData":"someMoreData"},"msg1":"hello world","msg2":"foo equals bar"},"5":{"8":{"data":"someData","moreData":"someMoreData"},"msg1":"world hello","msg2":"bar equals foo"},"your_name":"jimmy","your_msg":"hello world"},"4":{"3":{"5":{"data":"someData","moreData":"someMoreData"},"msg1":"hello world","msg2":"foo equals bar"},"5":{"8":{"data":"someData","moreData":"someMoreData"},"msg1":"world hello","msg2":"bar equals foo"},"your_name":"billy","your_msg":"foo equals bar"}}; for(let key of Object.getOwnPropertyNames(array[1])) { if(Object(array[1][key]) !== array[1][key]) break; console.log('msg1 of "'+key+'": ' + array[1][key].msg1); } console.log('your_msg: ' + array[1].your_msg);
您顯示的示例是一個只有一個索引的數組,該索引內有嵌套對象,您可以使用屬性迭代器(foreach)對其進行迭代。 由於您需要的值在那里,因此您必須進入第二級。
for (var key in object) {
for(var anotherKey in object[key]) {
//check for undefined
if(object[key][anotherKey].hasOwnProperty('msg')) {
//code
}
}
}
{}-聲明對象(文字)
[]-聲明數組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.