js向数组中添加不重复元素的方法封装
时间: 2023-12-01 22:02:38 浏览: 68
可以使用 Set 数据结构来判断元素是否重复,然后将其转化为数组。以下是封装的代码:
function addDistinctItem(arr, item) {
const set = new Set(arr);
if (!set.has(item)) {
arr.push(item);
}
return arr;
}
调用方式为:
const arr = [1, 2, 3];
addDistinctItem(arr, 2); // [1, 2, 3]
addDistinctItem(arr, 4); // [1, 2, 3, 4]
相关问题
二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找过程可以分为以下步骤: (1)首先,从有序数组的中间的元素开始搜索,如果该元素正好是目标元素(即要查找的元素),则搜索过程结束,否则进行下一步。 (2)如果目标元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半区域查找,然后重复第一步的操作。 (3)如果某一步数组为空,则表示找不到目标元素。 7) 封装binary_search(arr, key),使用非递归算法,实现二分查找,返回目标元素的索引值 8) 封装binary_search(arr,low, high, key),使用递归算法,实现二分查找,返回目标元素的索引值
好的,下面是实现二分查找的代码:
1. 非递归算法:
```javascript
function binary_search(arr, key) {
let low = 0;
let high = arr.length - 1;
while (low <= high) {
const mid = Math.floor((low + high) / 2);
if (arr[mid] === key) {
return mid;
} else if (arr[mid] < key) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
console.log(binary_search(arr, 5)); // 4
console.log(binary_search(arr, 10)); // -1
```
2. 递归算法:
```javascript
function binary_search(arr, low, high, key) {
if (low > high) {
return -1;
}
const mid = Math.floor((low + high) / 2);
if (arr[mid] === key) {
return mid;
} else if (arr[mid] < key) {
return binary_search(arr, mid + 1, high, key);
} else {
return binary_search(arr, low, mid - 1, key);
}
}
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
console.log(binary_search(arr, 0, arr.length - 1, 5)); // 4
console.log(binary_search(arr, 0, arr.length - 1, 10)); // -1
```
需要注意的是,二分查找只适用于有序数组,并且在数组中查找特定元素的时间复杂度为 O(logn),效率非常高。
11) 封装函数,获取数组中重复元素。 var arr = ['旅行箱', '旅行箱', '小米', '大米', "手机", "小米", "电脑", '旅行箱',"手机"]; 调用repeat()函数,返回 ["旅行箱", "小米", "手机"] 12) 输入5个正整数,存入数组,封装函数,将5个数中为质数的数存入数组。 质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,
11)实现代码如下:
```javascript
function repeat(arr) {
let res = [];
let map = {};
for (let i = 0; i < arr.length; i++) {
if (map[arr[i]]) { // 如果该元素已经出现过,则加入结果数组
res.push(arr[i]);
} else {
map[arr[i]] = true; // 否则将该元素记录为出现过
}
}
return res;
}
let arr = ['旅行箱', '旅行箱', '小米', '大米', "手机", "小米", "电脑", '旅行箱',"手机"];
console.log(repeat(arr)); // ["旅行箱", "小米", "手机"]
```
12)实现代码如下:
```javascript
function isPrime(num) { // 判断一个数是否为质数
if (num < 2) return false;
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false;
}
return true;
}
function getPrime(arr) {
let res = [];
for (let i = 0; i < arr.length; i++) {
if (isPrime(arr[i])) { // 如果该数为质数,则加入结果数组
res.push(arr[i]);
}
}
return res;
}
let arr = [2, 4, 7, 10, 11];
console.log(getPrime(arr)); // [2, 7, 11]
```
阅读全文