在javascript中修改数组结构 少量更新(仅用于澄清“重复问题标志”)
这个问题与javascript略有不同,因为在这里我们讨论了一些使用javascript循环数组的方法。在我的例子中,我们讨论的是如何使用javascript“修改”现有的关联数组。这不是完全相同的概念,因为在我的具体案例中,我们可以尝试应用与循环不同的东西 我用chrome浏览器中的在javascript中修改数组结构 少量更新(仅用于澄清“重复问题标志”),javascript,arrays,Javascript,Arrays,这个问题与javascript略有不同,因为在这里我们讨论了一些使用javascript循环数组的方法。在我的例子中,我们讨论的是如何使用javascript“修改”现有的关联数组。这不是完全相同的概念,因为在我的具体案例中,我们可以尝试应用与循环不同的东西 我用chrome浏览器中的console.log复制了这个数据结构obj: var obj = { key_1: [{ prop_1: "some_value", prop_2: "some_valu
console.log
复制了这个数据结构obj
:
var obj = {
key_1: [{
prop_1: "some_value",
prop_2: "some_value_2",
prop_3: "some_value_3",
prop_4: "some_value",
prop_5: "some_value"
}, {
prop_1: "some_value",
prop_2: "some_value_2",
prop_3: "some_value_3",
prop_4: "some_value",
prop_5: "some_value"
}],
key_2: [{
prop_1: "some_value",
prop_2: "some_value_2",
prop_3: "some_value_3",
prop_4: "some_value",
prop_5: "some_value"
}, {
prop_1: "some_value",
prop_2: "some_value_2",
prop_3: "some_value_3",
prop_4: "some_value",
prop_5: "some_value"
}]
};
循环并推入新阵列
我试图从obj
获取一个名为new\u arr
的新数组作为输出结果,该数组只填充prop\u 2
和prop\u 3
以及键值。如下面的示例结果所示:
new_arr = [
["some_value_2","some_value_3","key_1"],
["some_value_2","some_value_3","key_1"],
["some_value_2","some_value_3","key_2"],
["some_value_2","some_value_3","key_2"]
];
因此,我尝试执行一个for循环,在该循环中,我只推送所需的属性,如下面的示例代码:
new_arr = [];
for (var key in obj) {
new_arr.push(
obj[key][0].prop_2 + ', ' +
obj[key][0].prop_3 + ', ' +
key);
}
console.log(new_arr);
输出问题
困扰我的问题与new_arr
只包含[0]索引数组这一事实有关。因此索引1处的数组不会被推入内部。是否有方法访问所有索引属性并对所有索引执行循环(不仅仅是案例索引[0])
有什么建议吗?
谢谢你的建议 为索引创建一个内部循环
for (var key in arr) {
for (var innerKey in arr[key]) {
new_arr.push( [
arr[key][innerKey].prop_2,
arr[key][innerKey].prop_3,
key ])
}
}
使用嵌套循环
var-arr={
重点1:[{
道具1:“一些价值”,
道具2:“一些价值观”,
道具3:“一些价值观”,
道具4:“一些价值”,
第5项:“某些价值”
}, {
道具1:“一些价值”,
道具2:“一些价值观”,
道具3:“一些价值观”,
道具4:“一些价值”,
第5项:“某些价值”
}],
重点2:[{
道具1:“一些价值”,
道具2:“一些价值观”,
道具3:“一些价值观”,
道具4:“一些价值”,
第5项:“某些价值”
}, {
道具1:“一些价值”,
道具2:“一些价值观”,
道具3:“一些价值观”,
道具4:“一些价值”,
第5项:“某些价值”
}]
};
var newarr=[];
for(arr中的var键){
arr[key].forEach(obj=>newarr.push([obj.prop_2,obj.prop_3,key]);
}
控制台日志(newarr)代码>当然,就像在任何编程语言中一样,您可以使用for循环:for(var i=0;i可能的重复项您可以使用extend并使新的数组extend具有所有属性的默认值。您不应该用逗号连接字符串,您应该创建推送的数组。您拒绝重复项是错误的。您没有修改原始数组中的任何内容,您只是询问如何通过嵌套数组以获取所有元素,而不仅仅是[0]
元素。您对它们所做的操作无关紧要。只要我对内部数组键一无所知(如果索引是连续的或不连续的),for..in
是比for i
更好的方法。您的解决方案的问题是输出结果值可能是串联的,因此对于每个数组索引值,我们有如下内容:[“some_value_2,some_value_3,key_1”],只有一个双引号。最佳解决方案是有类似:[“some_value_2”,“some_value_3”,“key_1”]@UgoL,你说得对,我只是在编辑你的代码时关心索引问题…修复了它。这不是“我知道xyz吗?”的问题。它是数组吗?->用于(…;…;…)
;它是对象吗?->用于(…in…)
Thank you@Barmar,这正是我要搜索的。输出结果非常完美。你能用几句话向我解释一下使用obj的forEach是如何工作的吗?因为我们假设arr像一个对象数组?我添加了一些解释。但是你没有看到可能重复的forEach
示例吗?arr
ARR < /代码>。r示例“key_0”包含所有内容。考虑到我们需要迭代2个嵌套键,循环将如何进行?