繁体   English   中英

如何在Javascript中获取subArray的所有子级

[英]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 如何在不知道cat1cat2具有index 2情况下获取它们的值( cat1 ,它也可以是642 )。 在这种情况下,第一个数组只有一个subArray,但我想使其适用于多个subArray。 (为澄清cat1 ,从第二级子cat2选择cat1cat2 ,在这种情况下为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM