繁体   English   中英

拼接不覆盖forEach循环内指定索引处数组中的元素

splice not overriding element in an array at the specified index inside a forEach loop

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试将数组转换为稍有不同的格式,并且现在使用如下所示的接头:

letnewArray.splice( idx , 0 , obj );

我的整个代码如下所示:

 let yaml_doc_json = [{ name: 'guidIds', ids: ['209A3935-2305-4786-960B-BB008F3E9DC9', 'C10D76D2-89A3-4F28-B64E-2D78C953B283', 'B7164432-94B3-4096-A9EA-181D0F00D25E', 'DA366048-557F-42ED-AB1D-3B2196278E86' ] }, { name: 'keyMessage', ids: ['Enbril_RA_30.00', 'Enbril_RA_40.00', 'Enbril_RA_50.00', 'Enbril_RA_10.00' ] }, { name: 'SequenceName', ids: ['1_KEY_LUN_09_2017_Ukr_main', '1_KEY_LUN_09_2017_Ukr_sl01', '1_KEY_LUN_09_2017_Ukr_sl02', '1_KEY_LUN_09_2017_Ukr_sl03' ] } ], letnewArray = []; yaml_doc_json.forEach((e, i) => { //console.log(e); let id_name = yaml_doc_json[i].name; //console.log(id_name); e['ids'].forEach((elem, idx) => { console.log(idx); let obj = { id_name: elem } letnewArray.splice(idx, 0, obj); }); }); console.log(letnewArray); 

即使idx始终在0-3之间,我如何在letnewArray获得12个元素? 每次forEach循环运行时,是否应该覆盖特定索引处的元素? 为什么现在发生压倒一切? 我在这里真的在做什么错?

3 个回复

letnewArray的12个元素来自对letnewArray中的三个元素中的每一个进行yaml_doc_json详细说明( ids元素的数量)。

之所以存在12个事实,是因为Array.prototype.splice的语法。 完整的参考资料可以在这里找到: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

重要的部分是语法: array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

让我们回到您的代码。 我们有letnewArray.splice( idx , 0 , obj ); 根据上面的定义,我们可以推断

  • array => letnewArray
  • start => idx
  • deleteCount => 0
  • item1 => obj

将各种item1, item2, ...元素添加到数组。 因此,每次for循环循环时,我们删除0项并添加1个元素。

这说明了为什么letnewArray变量的结尾元素为12。

我希望能有所帮助。

Splice将第三个参数添加到现有数组。 请参阅https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_splice1

@charlietfl在评论中回答了这个!

splice()的第二个参数是deleteCount。 如果它为零,那么您要做的就是插入新项,并且该索引处及以后的所有其他项都将移至右侧。

1 在数组中的指定索引处减去元素

我是函数式编程和Scala的初学者。 我有一个包含Double数字的数组。 我想减去元素(基本上是两个数组,见示例),我无法在网上找到如何做到这一点。 例如,考虑一下 我想7.8 from 3.4减去4.4 from 2.1 , 7.8 from 3.4减去7.8 from 3 ...

2 在指定索引处修改Ruby数组中的元素?

我正在尝试在Ruby中学习数组操作,但是在修改数组中的指定元素时遇到了问题。 对于上下文,我正在编写一个生成Matrix的程序,然后在所述矩阵上执行操作。 矩阵定义为matix(i,j,val) ,其中i是行数, j是列数, val是在实例化时填充矩阵的每个单元格的值。 矩阵存储在 ...

3 如何在给定索引处覆盖数组中的元素? [重复]

这个问题已经在这里有了答案: 什么是NullReferenceException,如何解决? 31个答案 我有一个应用程序,可让用户输入有关课程ID,名称,模块1-模块4标记的详细信息。 我有一个添加按钮和一个用于编辑的按钮。 每当用户输入他/她的详细信息时, ...

2019-03-04 12:50:58 1 41   c#
4 获取指定索引处的数组元素

我有两个 Numpy 数组: B: 形状: (20, 20, 4, 3, 4) S: 形状: (20, 20, 4, 3) 这两个数组是对应的,因此对于 S 中的每个元素,在 B 中都存在一个有 4 个元素的数组。 我在 S 上使用 argmax 函数来获取最大值的索引(例如 1929) ...

5 在指定索引处移动数组元素

在指定索引处左右移动一个位置的最有效算法是什么? 例如,向左移动[a,b,c,d,e,f]的索引[1,3,5]以获得[b,a,d,c,f,e] 如果新的索引超出范围,我不希望它旋转。 我正在使用C ++ std :: vector进行数组存储。 ...

7 在指定索引处循环

我要迭代2个大列表,每个大列表各包含约10万个元素,一个元素比另一个大。 我的循环如下所示: 此电流循环时间太长。 但是, list1是需要从list2检查的列表,但是从某个索引开始, list2中没有其他实例。 这意味着从索引循环可能更快,但是问题是我不知道该怎么做。 在我 ...

8 如何在Matlab数组中的特定索引处输入元素而没有循环?

我在某些索引处删除数组x的元素。 接下来,我使用x计算另一个数组。 现在,我想将新元素(例如inf )放置在y ,以使新元素对应于原始x已删除元素的位置。 我使用以下代码执行此操作: 可以在没有for循环或没有排序的情况下对以上各行进行矢量化处理吗? ...

10 我如何从指定索引处的数组中删除元素,而这些索引本身都在数组中?

我正在使用Ruby 2.4。 如果我有一组数组索引,并且想删除这些索引处的所有元素,该怎么做? 我尝试了下面的方法,但是遗漏了一些东西 注意结尾数组。 从十个开始,然后在数组中指定要删除的三个元素索引,所以数组中应该只有七个元素。 但是我有八个要素。 如何调整语句以删除指定索引 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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