亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在JavaScript中合并兩個數組并重復刪除項目

如何在JavaScript中合并兩個數組并重復刪除項目

如何在JavaScript中合并兩個數組并重復刪除項目我有兩個JavaScript數組:var array1 = ["Vijendra","Singh"];var array2 = ["Singh", "Shakya"];我希望輸出為:var array3 = ["Vijendra","Singh","Shakya"];輸出數組應該刪除重復的單詞。如何在JavaScript中合并兩個數組,以便我只按照它們插入原始數組的順序從每個數組中獲取唯一項?
查看完整描述

4 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

僅合并數組(不刪除重復項)

ES5版本使用Array.concat

var array1 = ["Vijendra","Singh"];var array2 = ["Singh", "Shakya"];var array3 = array1.concat(array2); // Merges both arrays
// [ 'Vijendra', 'Singh', 'Singh', 'Shakya' ]

ES6版本使用解構

const array1 = ["Vijendra","Singh"];const array2 = ["Singh", "Shakya"];const array3 = [...array1, ...array2];

由于沒有“內置”方法來刪除重復項(ECMA-262實際上對此有用Array.forEach),我們必須手動完成:

Array.prototype.unique = function() {
    var a = this.concat();
    for(var i=0; i<a.length; ++i) {
        for(var j=i+1; j<a.length; ++j) {
            if(a[i] === a[j])
                a.splice(j--, 1);
        }
    }
    return a;};

然后,使用它:

var array1 = ["Vijendra","Singh"];var array2 = ["Singh", "Shakya"];// Merges both arrays and gets unique itemsvar array3 = array1.c
oncat(array2).unique();

這也將保留數組的順序(即,不需要排序)。

由于許多人對環形Array.prototypefor in循環的原型擴充感到惱火,因此這是一種使用它的侵入性較小的方法:

function arrayUnique(array) {
    var a = array.concat();
    for(var i=0; i<a.length; ++i) {
        for(var j=i+1; j<a.length; ++j) {
            if(a[i] === a[j])
                a.splice(j--, 1);
        }
    }
    return a;}var array1 = ["Vijendra","Singh"];var array2 = ["Singh", "Shakya"];
    // Merges both arrays and gets unique itemsvar array3 = arrayUnique(array1.concat(array2));

對于那些有幸使用ES5可用的瀏覽器的人,你可以Object.defineProperty像這樣使用:

Object.defineProperty(Array.prototype, 'unique', {
    enumerable: false,
    configurable: false,
    writable: false,
    value: function() {
        var a = this.concat();
        for(var i=0; i<a.length; ++i) {
            for(var j=i+1; j<a.length; ++j) {
                if(a[i] === a[j])
                    a.splice(j--, 1);
            }
        }
        return a;
    }});


查看完整回答
反對 回復 2019-05-27
?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

這是使用擴展運算符和數組泛型的ECMAScript 6解決方案。

目前它只適用于Firefox,可能還適用于Internet Explorer Technical Preview。

但是如果你使用Babel,你現在可以擁有它。

// Input: [ [1, 2, 3], [101, 2, 1, 10], [2, 1] ]// Output: [1, 2, 3, 101, 10]function mergeDedupe(arr){
  return [...new Set([].concat(...arr))];}


查看完整回答
反對 回復 2019-05-27
  • 4 回答
  • 0 關注
  • 1819 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號