数组相关操作
1.数组去重
(1)indexOf()去重
function unique(arr){
if (!Array.isArray(arr)) {
console.log('type error!')
return
}
let tmp = []
arr.forEach((itm,idx) =>{
if(tmp.indexOf(arr[idx]) === -1){
tmp.push(itm)
}
})
return tmp
}
(2) 对象属性去重(推荐,因为只需要遍历一遍)
function unique(arr){
if (!Array.isArray(arr)) {
console.log('type error!')
return
}
let obj = {}
let tmp = []
arr.forEach(itm =>{
if(!obj[itm]){
tmp.push(itm)
obj[itm] = true
}
})
return tmp
}
(3)set与解构赋值去重(推荐,便利,快速)
function unique(arr){
if (!Array.isArray(arr)) {
console.log('type error!')
return
}
return [...new Set(arr)]
}
(4)set与Array.from(推荐,便利,快速)
function unique(arr){
if (!Array.isArray(arr)) {
console.log('type error!')
return
}
return Array.from(new Set(arr))
}
2.有一个长度为 100 的数组,如何从中随机挑选 10 个不重复的元素,组成一个新的数组?
function random(len, start, end) {
var arr = [];
function _inner(start, end) {
return parseInt(Math.random() * (end - start) + start)
}
while (arr.length < len) {
var num = _inner(start, end);
if (arr.indexOf(num) == -1) {
arr.push(num);
}
}
return arr;
}
3.数组排序
(1)冒泡排序
unction bubbleSort(arr) {
for(let i = 0,l=arr.length;i<l-1;i++) {
for(let j = i+1;j<l;j++) {
if(arr[i]>arr[j]) {
let tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
}
}
return arr;
}
(2)选择排序
function quickSort(arr) {
if(arr.length<=1) {
return arr;
}
let leftArr = [];
let rightArr = [];
let q = arr[0];
for(let i = 1,l=arr.length; i<l; i++) {
if(arr[i]>q) {
rightArr.push(arr[i]);
}else{
leftArr.push(arr[i]);
}
}
return [].concat(quickSort(leftArr),[q],quickSort(rightArr));
}
4.判断是数组
function isArray(arg) {
if (typeof arg === 'object') {
return Object.prototype.toString.call(arg) === '[object Array]';
}
return false;
}
5.判断是对象
function isObject(arg) {
if (typeof arg === 'object') {
return Object.prototype.toString.call(arg) === '[object Object]';
}
return false;
}
typeof obj === Object
// 根据typeof判断对象也不太准确
表达式 返回值
typeof undefined 'undefined'
typeof null 'object'
typeof true 'boolean'
typeof 123 'number'
typeof "abc" 'string'
typeof function() {} 'function'
typeof {} 'object'
typeof [] 'object'
网友评论