数组如何按照固定位置插入内容

有两个数组

var arr1 = ['河南', '河北', '湖南', '湖北', '山西', '山东', '广东', '广西', '浙江', '福建', '安徽']

var arr2 = ['河北', '湖北', '山东', '浙江']

取arr1中的相同内容插入arr2中,保持顺序不变。
比如'河南'插入arr2需要还在第0位,'山西'插入arr2,因为arr2中前边的内容没有,则按顺序插入到第2位

阅读 5k
3 个回答

看你说的例子,取河南和山西 ... 这个在 arr 1 里面是没有重复的,
按照说明感觉不对啊,如果按照 arr1 的重复内容丢到 arr2 ,那你直接去取重复的不就好了吗?

// 取重复的
const arr = arr1.filter( (item, index) => arr1.slice(index + 1).includes(item) )

如果 arr2 有默认的内容,并且在 arr1 里面

// 取重复的
const arr = arr1.filter( (item, index) => arr2.concat(arr1.slice(index + 1)).includes(item) )

如果重复次数超过1, 用 [...new Set([])] 去重

var arr1 = ['河南', '河北', '湖南', '湖北', '山西', '山东', '广东', '广西', '浙江', '福建', '安徽']
var arr2 = ['河北', '湖北', '山东', '浙江']

arr1.map((item, index) => arr2.splice(index, 1, item));
console.log(arr2);

数组有 API 可以在指定位置删除、添加元素:

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

参数

start​

指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数,这意味着-n是倒数第n个元素并且等价于array.length-n);如果负数的绝对值大于数组的长度,则表示开始位置为第0位。

deleteCount 可选

整数,表示要移除的数组元素的个数。

如果 deleteCount 大于 start 之后的元素的总数,则从 start 后面的元素都将被删除(含第 start 位)。

如果 deleteCount 被省略了,或者它的值大于等于array.length - start(也就是说,如果它大于或者等于start之后的所有元素的数量),那么start之后数组的所有元素都会被删除。

如果 deleteCount 是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。

item1, item2, _..._ 可选

要添加进数组的元素,从start 位置开始。如果不指定,则 splice() 将只删除数组元素。

详情请见 >>>>Array.prototype.splice()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题