當前位置:成語大全網 - 書法字典 - Js字典重復值

Js字典重復值

如果只是針對題主的需求,樓上的回答應該能解決問題。

然而,如果我們更全面地考慮它,我們應該考慮到JS數組中的數據類型可以是多種多樣的(可能是對象、數組、字符串...).

所以我寫了壹個更復雜的,可能效率不高,可以慢慢優化:

(函數(){

功能?is object(o)?{

回歸?object . prototype . tostring . call(o)?===?【對象?對象】‘;

}

功能?伊薩雷(o)?{

回歸?object . prototype . tostring . call(o)?===?【對象?數組】‘;

}

功能?重復(arr)?{

var?tmp

如果?(!arr?||?長度是多少?===?0)?{

回歸?[];

}

為了什麽?(var?我?=?0,?萊恩。=?數組長度;?我?& lt?len?i++)?{

tmp?=?arr【I】;

如果?(艾薩裏(tmp))?{

為了什麽?(var?j?=?我?+?1;?j?& lt?len?j++)?{

如果?(isArray(arr【j】)?& amp& amp?tmp .長度?===?arr【j】。長度)?{

var?旗幟?=?假的;

為了什麽?(var?k?=?0;?k?& lt?tmp.length?k++)?{

如果?(tmp【k】?!==?arr【j】【k】)?{

旗幟?=?真實;

打破;

}

}

如果?(!flag)?{

拼接(j,?1);

len-;

j-;

}

}

}

}?不然呢?如果?(is object(tmp))?{

為了什麽?(var?j?=?我?+?1;?j?& lt?len?j++)?{

如果?(is object(arr【j】))?{

var?tmpKey?=?[],?objKey?=?[],?旗幟?=?假的;

為了什麽?(var?k?在?tmp)?{

tmp key . push(k);

}

為了什麽?(var?l?在?arr【j】)?{

objkey . push(l);

}

如果?(tmpKey.length?===?objKey.length)?{

為了什麽?(var?鑰匙?在?tmp)?{

如果?(tmp【重點】?!==?arr【j】【key】)?{

旗幟?=?真實;

打破;

}

}

}

如果?(!flag)?{

拼接(j,?1);

len-;

j-;

}

}

}

}?不然呢?{

為了什麽?(var?j?=?我?+?1;?j?& lt?len?j++)?{

如果?(tmp?===?arr【j】)?{

拼接(j,?1);

len-;

j-;

}

}

}

}

回歸?arr

}

var?列表?=?【{“id“:1,?“名稱“:?“AA“},?{“id”:1,?“名稱“:?“AA“},?{“id”:1,?“名稱“:?“AA“},?{“id“:2,?“名稱“:?“BB“}】;

var?ls?=?【{“id“:1,?“名稱“:?“AA“},?{“id”:1,?“名稱“:?“AA“},?[12,?23],?[12,?23],?[12,?23,?34],?{“XXX“:?“yyy”,?“id“:?2},?“aa”,?“aa”,?“AABB“】;

var?列表2?=?副本(列表);

var?ls2?=?副本(ls);

console . log(list 2);

console . log(ls2);

})();我希望能解決這個問題...