Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中修改数组结构 少量更新(仅用于澄清“重复问题标志”)_Javascript_Arrays - Fatal编程技术网

在javascript中修改数组结构 少量更新(仅用于澄清“重复问题标志”)

在javascript中修改数组结构 少量更新(仅用于澄清“重复问题标志”),javascript,arrays,Javascript,Arrays,这个问题与javascript略有不同,因为在这里我们讨论了一些使用javascript循环数组的方法。在我的例子中,我们讨论的是如何使用javascript“修改”现有的关联数组。这不是完全相同的概念,因为在我的具体案例中,我们可以尝试应用与循环不同的东西 我用chrome浏览器中的console.log复制了这个数据结构obj: var obj = { key_1: [{ prop_1: "some_value", prop_2: "some_valu

这个问题与javascript略有不同,因为在这里我们讨论了一些使用javascript循环数组的方法。在我的例子中,我们讨论的是如何使用javascript“修改”现有的关联数组。这不是完全相同的概念,因为在我的具体案例中,我们可以尝试应用与循环不同的东西

我用chrome浏览器中的
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个嵌套键,循环将如何进行?