如何在Javascript中获取子数组的所有子级
所以我的问题是: 这就是我的数组的样子,我在这里展示了它的一个片段(从控制台窗口) 这是基本的,对吧?除了索引。如您所见,第一个值为如何在Javascript中获取子数组的所有子级,javascript,arrays,Javascript,Arrays,所以我的问题是: 这就是我的数组的样子,我在这里展示了它的一个片段(从控制台窗口) 这是基本的,对吧?除了索引。如您所见,第一个值为“1”,第二个值为“4”。至于它的子数组,它们也有自定义索引 因此,老式的: for(i=0; i<array.length; i++){ someVar = array[i]; //do something } 要使其更实用,请执行以下操作: 所以我知道第一个数组有索引1。如何在不知道其索引为的情况下获取cat1和cat2的值(例如,这也可能是6
“1”
,第二个值为“4”
。至于它的子数组,它们也有自定义索引
因此,老式的:
for(i=0; i<array.length; i++){
someVar = array[i];
//do something
}
要使其更实用,请执行以下操作:
所以我知道第一个数组有索引1
。如何在不知道其索引为的情况下获取cat1
和cat2
的值(例如,这也可能是6
或42
)。在本例中,第一个阵列只有一个子阵列,但我希望它可以用于多个子阵列。(要澄清,请从第二级子阵列中选择cat1
,cat2
,在本例中为索引2
)
提前感谢,感谢您的帮助
Evoc那些不是数组。你有
[ { "1": { etc...
它是一个数组,包含一个包含多个其他对象的对象。您不能真正使用for(i=…)
循环来实现这一点,因为您的键不是按顺序排列的。您应该为…使用。。。改为在
循环中:
arr = [{"1":{....}}];
for (i in arr[0]) {
for (j in arr[0][i]) {
console.log(arr[0][i][j]['msg']);
}
}
那些不是数组。你有
[ { "1": { etc...
它是一个数组,包含一个包含多个其他对象的对象。您不能真正使用for(i=…)
循环来实现这一点,因为您的键不是按顺序排列的。您应该为…使用。。。改为在
循环中:
arr = [{"1":{....}}];
for (i in arr[0]) {
for (j in arr[0][i]) {
console.log(arr[0][i][j]['msg']);
}
}
使用
Object.getOwnPropertyNames
首先获取按整数索引排序的属性,从最小到最大。迭代它们以获得msg1
var数组={“1”:{“3”:{“5”:{“数据”:“someData”,“moreData”:“someMoreData”},“msg1”:“hello world”,“msg2”:“foo equals bar”},“5”:{“8”:{“data”:“someData”,“moreData”:“someMoreData”},“msg1”:“world hello”,“msg2”:“bar equals foo”},“你的名字”:“jimmy”,“你的消息”:“hello world”},“4”:{“3”:“5”:“data”:“someData”:“someData”,“moreData”:“someMoreData”“你好,世界”,“msg2”:“foo等于bar”},“5”:{“8”:{“data”:“someData”,“moreData”:“someMoreData”},“msg1”:“世界你好”,“msg2”:“bar等于foo”},“你的名字”:“比利”,“你的msg”:“foo等于bar”};
for(对象的let键。getOwnPropertyNames(数组[1])){
if(对象(数组[1][key])!==数组[1][key])中断;
log('msg1 of“'+key+”:'+array[1][key].msg1);
}
console.log('your_-msg:'+array[1].your_-msg);
使用Object.getOwnPropertyNames
首先获取按整数索引排序的属性,从最小到最大。迭代它们以获取msg1
var数组={“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”},“你的名字”:“jimmy”,“你的消息”:“hello world”},“4”:{“3”:“5”:“data”:“someedata“你好,世界”,“msg2”:“foo等于bar”},“5”:{“8”:{“data”:“someData”,“moreData”:“someMoreData”},“msg1”:“世界你好”,“msg2”:“bar等于foo”},“你的名字”:“比利”,“你的msg”:“foo等于bar”};
for(对象的let键。getOwnPropertyNames(数组[1])){
if(对象(数组[1][key])!==数组[1][key])中断;
log('msg1 of“'+key+”:'+array[1][key].msg1);
}
console.log('your_-msg:'+array[1].your_-msg);
您显示的示例是一个只有一个索引的数组,在这个索引中有嵌套的对象,您可以使用属性迭代器(foreach)迭代它们。您必须转到第二级tho,因为您需要的值在那里
for (var key in object) {
for(var anotherKey in object[key]) {
//check for undefined
if(object[key][anotherKey].hasOwnProperty('msg')) {
//code
}
}
}
{}-声明对象(文字)
[]-声明数组您展示的示例是一个只有一个索引的数组,在这个索引中有嵌套的对象,您可以使用属性迭代器(foreach)对它们进行迭代。您必须转到第二级tho,因为您需要的值就在那里
for (var key in object) {
for(var anotherKey in object[key]) {
//check for undefined
if(object[key][anotherKey].hasOwnProperty('msg')) {
//code
}
}
}
{}-声明对象(文字)
[]-声明数组“这可能不太正确,因为我只是把这个作为示例,但我希望您可以使用它”不太正确。在JavaScript中,您使用
[entry0,entry1,entry2]
定义数组(例如[1,2,3]
或[“a”,“b”,“c”]
或[1,“b”,32.4]
等)使用{key1:value1,key2:value2}定义对象
。因此,请使用正确的数组与对象表示法更新您的问题;否则,人们将不得不猜测。请添加带有键的数组。您说过您只需要第二级中的非数字属性,对吗?那么msg1
处于第三级,那么您到底在寻找什么?看起来像一个带有length=1
带有嵌套属性。好吧,我会完全更新我的问题,很抱歉给您带来不便“这可能不太正确,因为我只是为示例制作了这一个,但我希望您可以使用它”不是真的。在JavaScript中,您使用[entry0,entry1,entry2]
(例如,[1,2,3]
或[“a”、“b”、“c”]
或[1,“b”、32.4]
等)使用{key1:value1,key2:value2}定义对象
。因此,请使用正确的数组与对象表示法更新您的问题;否则,人们将不得不猜测。请添加带有键的数组。您说过您只需要第二级中的非数字属性,对吗?那么msg1
处于第三级,那么您到底在寻找什么?看起来像一个带有length=1
具有嵌套属性。好吧,我将完全更新我的问题,很抱歉给您带来不便。从技术上讲,他确实有一个数组,尽管可能不打算以那种方式使用。请注意,因为in
不保证任何迭代顺序。谢谢@marc,我确实弄错了数组…我的错了,我很抱歉这是我的节目