// 方法1:使用Map数据结构varsingleNumbers=function(nums){
const m =newMap();for(let v of nums){
if(m.has(v)){
m.set(v,m.get(v)+1)}else{
m.set(v,1);}}
result =[];for(let v of m){
if(v[1]===1){
result.push(v[0])}}
console.log(result);return result;};
// 使用位运算的方法varsingleNumbers=function(nums){
let temp =0;let temp2 =0;let temp3 =0;for(let v of nums){
temp = temp ^ v;}let temp1 = temp.toString(2);let flag =1;for(let i = temp1.length-1;i >=0;i--){
console.log(temp1[i]);if(temp1[i]==='0'){
flag = flag +1;}else{
break;}}// 遍历每个数组,将数组中的值转为二进制const result =[]for(let v of nums){
result.push(v.toString(2));}
console.log(result);let arr1 =[];let arr2 =[];for(let v of result){
if(v[v.length-flag]==='1'){
arr1.push(v);}else{
arr2.push(v);}}
console.log(flag);
console.log(arr1);
console.log(arr2);for(let i in arr1){
arr1[i]=parseInt(arr1[i],2)}for(let i in arr2){
arr2[i]=parseInt(arr2[i],2)}
console.log(arr1);
console.log(arr2);for(let v of arr1){
temp2 = temp2 ^ v;}for(let v of arr2){
temp3 = temp3 ^ v;}
console.log(temp2,temp3);return[temp2,temp3];};
varsingleNumbers=function(nums){
let temp =0;let a =0;let b =0;for(let v of nums){
temp = temp ^ v;}
console.log(temp);// 判断从右往左第几位是1let One_Location =1;while((temp & One_Location)===0){
One_Location = One_Location <<1;}for(let v of nums){
if((One_Location & v)===0){
a = a ^ v;}else{
b = b ^ v;}};return[a,b];};