我如何使用循环和切片和/或concat在数组的每个索引上插入值?

问题描述 投票:0回答:2

我目前正在做学校作业,可以真正使用您的帮助。我必须声明一个带有两个参数x和一个数组arr的函数。它必须返回一个包含多个数组的数组,其中x分别插入第一个数组的索引0,第二个数组的索引1,依此类推,直到数组中没有数字为止。请参阅示例图片,并弄清最终结果是什么样的。它必须在任何给定的数组上工作,并且赋值指定slice()和concat()会很好用。 example of assignment

function insert_all_positions (x, arr) {  
    var newArr = [];  
    for(var i = 0; i < arr.length; i++) {  
      return(arr.concat(x)); }
   };

这只是将x值添加到数组的末尾,我必须对其进行循环,以便将值插入所有索引。我在想可以使用array.splice()方法,但我不确定如何使用它,我不确定。谢谢:)

javascript arrays loops concat
2个回答
0
投票

正如尼娜已经说过的:任务的想法是,您自己尝试一些事情,然后我们可以帮助您进行改进。

尽管如此,这是一种执行所需操作的简单方法:

function iap(v,arr){
 var l=arr.length, ret=[];
 for (var i=0;i<=l;i++) ret.push(arr.slice(0,i).concat([v],arr.slice(i,l)));
 return ret;
}

console.log(iap(8,[1,2,3]));

0
投票

尝试此

 function myFunc(x,arr){
   let result =[]
   for(let i=0;i<arr.length;i++){
    let arrToAdd = [...arr]
    arrToAdd[i]=x
    result.push(arrToAdd)
   }
   return result
}

您创建了一个结果数组,将其推入数组,然后运行一个循环,该循环将运行与参数arr的长度完全相同的次数。循环的每次迭代都会创建一个新数组,该数组是arr的副本,然后您每次只需更改其中一个数字,然后将整个数组添加到结果中即可。

© www.soinside.com 2019 - 2024. All rights reserved.