Javascript 给定元素的特定索引,如何替换数组中的元素?

Javascript 给定元素的特定索引,如何替换数组中的元素?,javascript,arrays,Javascript,Arrays,如何用oddArr中的元素替换数组中的'odd',以便 var array = ['odd', 'odd', 2, 8, 'odd', 4]; var oddArr = [1, 3, 5]; ?循环遍历数组,如果发现odd则使用array.shift()替换为oddArr中的元素 const数组=['odd','odd',2,8',odd',4]; 常数oddArr=[1,3,5]; const result=array.map(e=>e=='odd'?oddArr.shift():e) c

如何用oddArr中的元素替换数组中的'odd',以便

var array = ['odd', 'odd', 2, 8, 'odd', 4];
var oddArr = [1, 3, 5];

循环遍历数组,如果发现
odd
则使用
array.shift()替换为
oddArr
中的元素

const数组=['odd','odd',2,8',odd',4];
常数oddArr=[1,3,5];
const result=array.map(e=>e=='odd'?oddArr.shift():e)

console.log(result)
您可以通过一个简单的循环来实现这一点:

var数组=[“奇”、“奇”、2、8、“奇”、4];
var Oddar=[1,3,5];
var结果=[],i=0;
array.forEach(函数(x){
如果(x==“奇数”){
结果:推(oddArr[i]);
i++;
}
否则{
结果:推(x);
}
});

控制台日志(结果)
您可以使用
map
和如下索引变量:

var数组=[“奇”、“奇”、2、8、“奇”、4];
var Oddar=[1,3,5];
设currentIndex=0;
const newArray=array.map(a=>a==='odd'?oddArr[currentIndex++]:a)

console.log(newArray)
奇数应该包装在
''

var数组=['odd','odd',2,8',odd',4];
var Oddar=[1,3,5];
//截取阵列

对于(设i=0;i您可以对索引进行闭包,而不必变异
oddArr

const
数组=['odd','odd',2,8',odd',4],
Oddar=[1,3,5],
result=array.map((i=>v=>v=='odd'?oddArr[i++]:v)(0));

console.log(result);
使用forEach()循环遍历数组,并使用oddArr中的交叉积水1更改奇数值,并创建索引计数器(x),如下所示

var newArr = [1, 3, 2, 8, 5, 4];

什么是
odd
定义为?可能的重复虽然这正确地回答了问题,但请注意,这会使
oddArr
发生变异。有些人可能不希望或不希望出现这种后置条件。如果odd大于odd数组的长度怎么办?@G.aziz则
结果将有
未定义的
条目。这是可接受的这应该是公认的答案。简单而优雅的解决方案,没有副作用。是的,我同意-这是我自己答案的一个更简洁的版本。(我还没有想出如何使用
map
,但这很有意义。)这个闭包比我添加的丑陋闭包要整洁得多:
(I=>array.map(v=>v==='odd'?oddArr[I++]:v))(0)
var array = ["odd","odd", 2, 8, "odd", 4];
var oddArr = [1, 3, 5];
var x=0;
array.forEach(function(v,i){
 if(array[i]=="odd")
 {array[i]=oddArr[x]; x++;}
 });
 console.log(array);