覆盖Javascript中的数组值

覆盖Javascript中的数组值,javascript,arrays,Javascript,Arrays,考虑下面的数组变量 var fruits = []; fruits.push("banana"); fruits.push("apple"); fruits.push("mango"); fruits.push("orange"); fruits.push("grapes"); 我们应该有这些价值观 fruits[0]=>"banana" fruits[1]=>"apple" fruits[2]=>"mango" fruits[3]=>"orange" fruits[4

考虑下面的数组变量

var fruits = [];
fruits.push("banana");
fruits.push("apple");
fruits.push("mango");
fruits.push("orange");
fruits.push("grapes");
我们应该有这些价值观

fruits[0]=>"banana"
fruits[1]=>"apple"
fruits[2]=>"mango"
fruits[3]=>"orange"
fruits[4]=>"grapes"
假设我有一个指针,它当前在第2位,所以当前值是mango,当我再次按下时,如何覆盖orange和grapes?可能吗?比如说,我想添加椰子,但我不想将其分配给水果[5],我想要的是用椰子取代橘子,它会继续下去。。。我如何做到这一点?谢谢。

使用:

理由如下:

从索引开始 删除计数 替换为可选的
使用分配替换一个索引处的项:

fruits[3] = 'coconut';
…或者如果您不知道它在哪里:

fruits[fruits.indexOf('orange')] = 'coconut';
或者,如果要使用谓词进行替换:

fruits = fruits.map(f => f === 'orange' ? 'coconut' : f);
…如果您想执行更高级的操作,如用0或更多替换替换一系列索引,请使用类似@inorganik的建议拼接


有很多选择。如果您有数据类型并希望查看所有可用的操作,那么MDN是一个很好的资源。这里有一些

使用拼接已经有了一个很好的答案,我不是故意不尊重它。 然而,拼接是一种变异现有阵列的方法。就我个人而言,我更喜欢使用slice:


其中end代表问题中提到的指针。和值表示要添加的值数组,如['couch']。

您甚至可以定义自己的psh函数,开始在任意位置插入,如下所示:

水果=[香蕉、苹果、芒果、橙子、葡萄]; 函数defpsharr,i{arr.psh=functionv{this[i++]=v} 除果,2;//启动pshingat偏移量2 水果。psh‘椰子’; 水果。psh‘柠檬’; 苹果;你要找的是什么
fruits = fruits.map(f => f === 'orange' ? 'coconut' : f);
const newFruits = fruits.slice(0, end).concat(values);