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

How can I insert a value on every index of array using a loop and slice and/or concat?

我目前正在为学校做作业,真的需要你的帮助。 我必须声明一个函数,它接受两个参数 x 和一个数组 arr。它必须 return 一个包含多个数组的数组,其中 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() 方法可以使用,我只是不确定如何使用它,因为我不是特别有经验。谢谢 :)

正如 Nina 所说:作业的理念是,您自己尝试一些事情,然后我们可以帮助您改进。

尽管如此,这里有一种简单的方法可以完成所需的工作:

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]));

试试这个

 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 的副本,然后每次只需更改其中的一个数字并将整个数组添加到结果中。