天天看點

Array的操作方法之splice()前言一、splice()的作用及使用二、合并兩個有序數組

前言

今天在leetcode上做了一道合并兩個有序數組的題目,用了splice()這個方法,于是打算做小筆記加深印象。

一、splice()的作用及使用

具有删除、插入。替換三個作用,該方法傳回的是一個數組(包含從原數組中删除的項(若沒有删除項則傳回一個空數組))

文法:

splice(index,howmany,item1,…itemx);

  • index——必須,整數,規定添加或者删除的位置,使用負數,從數組尾部規定位置。
  • howmany——必須,要删除的數量,如果為0,則不删除項目。
  • item1,…itemx——可選,向數組添加的新項目。

1. 删除

可删除任意數量的項,隻需指定2個參數:要删除的第一項的位置和要删除的項數。

let arr=[1,2,3];
let arr1=arr.splice(1,2);//會删除數組的第2和3個元素(即2,3)
alert(arr);//[1]
alert(arr1);//[2,3]
           

2. 插入

可以向指定位置插入任意數量的項隻需提供3個參數:起始位置、0(要删除的項數)、要插入的項。

let arr=[1,2,3];
let arr1=arr.splice(1,0,4,5);//會從數組的1位置開始插入4,5
alert(arr);//[1,4,5,2,3]
alert(arr1);//[]
           

3. 替換

可以向指定位置插入任意數量的項,且同時删除任意數量的項,隻需指定3個參數:起始位置、要删除的項數和要插入的任意數量的項(插入的數量不必與删除的數量相等)

let arr = [1,2,3];
let arr1=arr.splice(1,1,"red","green");//會删除3,然後從2位置插入字元串"red"和"green"
alert(arr);//[1,"red","green",3]
alert(arr1);//[2]
           

二、合并兩個有序數組

最簡單的方法:将兩個數組合并再排序

時間複雜度 : O((n + m)log(n + m))

/**
 * @param {number[]} nums1
 * @param {number} m
 * @param {number[]} nums2
 * @param {number} n
 * @return {void} Do not return anything, modify nums1 in-place instead.
 */
var merge = function(nums1, m, nums2, n) {
    nums1.splice(m, nums1.length - m, ...nums2);
    nums1.sort((a, b) => a - b);
};
           

繼續閱讀