1. 程式人生 > >js通過map和set判斷陣列中的物件的某個屬性是否有重複

js通過map和set判斷陣列中的物件的某個屬性是否有重複

一、測試資料
var specList = [
   
    {specDesc:'1233'},
{specDesc:'123'},
{specDesc:'1234'},
]

二、method

Fun ONE: 使用map()遍歷specList並生成目標屬性所構成的新陣列mapArr,再利用set()傳入陣列並輸出去重複後的陣列(setArr)的特性,判斷其size與arr的length比較;若小於,則有重複。

var mapArr= specList.map(item=>item.specDesc);
var setArr = new Set(arrNum);//去重複
console.log(setArr .size<mapArr.length?'有重複':'無重複');

//方式一 利用map判斷
function isExistInObj1(arr,key) {
	if([new Set(arr.map(item=>item.key))].size < arr.length){
	    console.log('重複')
	}else{
		console.log('無重複');
	}
}

Fun TWO: 使用hash物件對映的方式

//方式二
function isExistInObj2(arr,key) {
	let hash = {},len = arr.length;   
	while(len){
		len--; 
		if(hash[arr[len][key]]){ 
		    return true;
		}else{ 
			hash[arr[len][key]] = arr[len][key]; 
		}
	} 
	//console.log(hash)
	return false;
}



相關推薦

js通過mapset判斷陣列物件某個屬性是否重複

一、測試資料 var specList = [         {specDesc:'1233'},{specDesc:'123'},{specDesc:'1234'}, ] 二、method Fun ONE: 使用map()遍歷specList並生成目標屬性所構成的新陣列

js克隆mapset集合

//克隆map function cloneMap(map) { let obj= Object.create(null); for (let[k,v] of map) { obj[k] = v; } obj = JSON.string

JavaMapSet容器如何存物件

 之前看到過這樣一個問題,大概是:能否把一個物件(自定義,沒有任何方法)的兩個例項同時存放到同一個Set中去?  當時很懵,但是這幾天偶然看了Set和Map的原始碼就比較明瞭了。這裡總結一下。  首先,大體上為了儲存,有通過樹來存資料的,也有通過雜湊(has

js使用indexOflastIndexOf判斷陣列是否重複值的簡單方法

回顧js基礎時發現了indexOf和lastIndexOf的概念,想到了這種方式。 indexOf() 方法可返回某個指定的字串值在字串中首次出現的位置,是正向查詢。 lastIndexOf() 方法可返回一個指定的字串值最後出現的位置,是逆向查詢。 基本思路:inde

javascript對一個物件陣列按照物件某個屬性進行排序

在javascript中,物件和陣列是兩種不同的型別,這和php中的陣列概念不同。在javascript中,也有一些精妙的演算法,用來對一些物件進行排序。我在面試迅雷的時候,也拿到一道題,當時做題的時候考慮到時間,沒有去仔細研究,回來後再讀了一些方法,就知道真正的考點在哪裡了。 我們現在有一組“學

js--語法--forfor-in;訪問物件屬性.[]的區別

1.for js中for迴圈一般用於遍歷陣列 //前提:cars是個陣列 for (var i=0;i<cars.length;i++){ document.write(cars[i] + "<br>"); } 2.fo

Java物件物件bean、list集合、物件陣列MapSet以及字串轉換成Json

把Java對常用的一些資料轉換成Json,以便前臺的呼叫. 物件轉換為Json public class ConvertJson { /** * 物件轉換為Json * @param obj * @

JavaScriptMapSet

bob 二維數組 mic span 添加 ber {} trac 語言 JavaScript的默認對象表示方法{}可以視為其他語言中的Map或者Dictionary的數據結構,即一組鍵值對。 但是JavaScript的對象有個小問題,就是鍵必須是字符串,但實際上Number

Js基礎知識7-Es6新增對象Mapset數據結構

。。 log trie tty get 代碼 構造 ivr 錯誤 前言 JavaScript中對象的本質是鍵值對的集合,ES5中的數據結構,主要是用Array和Object,但是鍵只能是字符串。為了彌補這種缺憾,ES6帶來了一種新的數據結構Map。 Map也是鍵值對的集

劍指off:在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣一個二維陣列和一個整數,判斷陣列中是否含有該整數

題目描述 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 思路: 從左下角x開始尋找,x為此列最大數字,此行最小數字。如果目

C++mapset的使用與區別

set set是一種關聯式容器,其特性如下: set以RBTree作為底層容器 所得元素的只有key沒有value,value就是key 不允許出現鍵值重複 所有的元素都會被自動排序 不能通過迭代器來改變set的值,因為set的值就是鍵 針對這五點來說,

JS新增物件MapSet

JS新增物件Map、SetMapSet Map Map對映是ES6裡面新增的一個物件,是一組鍵值對的結構,具有極快的查詢速度。 <script type="text/javascript"> // 初始化Map需要一個二維陣列,或者直接初始化一個空

STLmapset

C++11才開始支援括號初始化!!! 關於STL中的map和set 首先來看一下關聯容器吧 關聯容器迭代器:map的value_type是pair<const key_type, mapped_type>,所以map迭代器只能改變關鍵字對映的值(mapped_type),不能

node js 判斷陣列是否包含某個

判斷陣列中是否包含某個值這裡有四種方法。 用的測試資料: let arr=["a","b","c"]; let arr2={"a":"aaa","b":"bbb","c":"ccc"}; in判斷是否在陣列的key裡 in操作符針對的是key,而非value。而對於普通的一

java 劍指offer 第一題:在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。

我用了三種解法,全部都可以在牛客網上通過。 第一種解法是最簡單的,遍歷整個二維陣列找那個整數; 第二種和第三種都是根據二維陣列有序的特性進行查詢,第二種方法是從左下角開始查詢,大於左下角刪除一行,小於左下角刪除一列;第三種是從右上角開始查詢,大於右上角刪除一行,小於右上角的

題目:在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。(Python實現)

''' 題目: 在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 ''' '''