InterSection(集合)
以下会来实作怎么找寻两个array的集合
先使用两个迴圈来实作BigO(n^2)
let array1 = [1,2,3,4,5]let array2 = [1,3,5,7,9]function interSection(arrayA, arrayB){ let result = [] //建立空阵列 for(let i = 0; i < arrayA.length; i++){ for(let j = 0; j<arrayB.length; j++){ if(arrayA[i] === arrayB[j]){ result.push(arrayA[i]) //塞入该数值 } } } return result //回传结果}console.log(interSection(array1,array2)) //[1, 3, 5]
小试身手複习一下Object使用
let c = "Hello"function count(inputStr){ let inputArr = inputStr.split('') let inputOBJ = {} for(let i = 0; i<inputArr.length; i++){ if(!inputOBJ[inputArr[i]]){ inputOBJ[inputArr[i]] = 1 }else{ inputOBJ[inputArr[i]] +=1 } } for(let t in inputOBJ){ if(inputOBJ[t] >= 2){ console.log(t) } }}count(c) //l
使用Object计算 BigO(n)
let array1 = [1,2,3]let array2 = [1,3,5]function Counter(arrayA, arrayB){ let result = [] let array3 = arrayA.concat(arrayB) let arrayOBJ = {} for(let i = 0; i < array3.length; i++){ if(!arrayOBJ[array3[i]]){ //若false则arrayOBJ{key:1:value:1} arrayOBJ[array3[i]] = Number.parseInt(1) }else{ arrayOBJ[array3[i]] += 1 //重複之后key+1 } console.log(arrayOBJ) } for(let property in arrayOBJ){ // console.log(result) if(arrayOBJ[property] >= 2){ //找寻arrayOBJ的key有没有value >=2 result.push(property) //并且塞入result } }return result}console.log(Counter(array1, array2)) //[ '1', '3' ]