![](/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.