We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
思路 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存到结果数组中
思路
code
Array.prototype.arrUnique_for = function () { let res = [this[0]]; let flag = false; for (let i = 1; i < this.length; i++) { for (let j = 0; j < res.length; j++) { if (this[i] === res[j]) { flag = true; break; } } if (!flag) { res.push(this[i]); } flag = false; } return res; }
思路 建一个空的临时数组,遍历传进来的参数(数组),并用临时数组.indexOf对数组的每一个值做判断,等于 -1表示临时数组没有这个值且收下这个值,否则表示已经有一个这个值了,拒收。 最后,临时数组就是我们要的去重后的数组。
function unique(arr) { var n = []; for (var i = 0; i < arr.length; i++) { if (n.indexOf(arr[i]) == -1) n.push(arr[i]); } return n; }; var arr=[1, 2, 1, 1, '1']; console.log(unique(arr)); //[1, 2, "1"]
Array.prototype.unique = function() { var n = []; //一个新的临时数组 for (var i = 0; i < this.length; i++) { //遍历当前数组 if (n.indexOf(this[i]) == -1) n.push(this[i]); //如果当前数组的第i已经保存进了临时数组,那么跳过,否则把当前项push到临时数组里面 } return n; }; var arr=[1, 2, 1, 1, '1']; console.log(arr.unique()); //[1, 2, "1"]
备注:
①Array.prototype 属性表示 Array 构造函数 [] 的原型 ,也就是[]是Array的一个实例, 所以本例子中 arr继承了Array.prototype的unique方法,且unique方法的this指向arr。 Array.prototype js中 [].slice 与 Array.prototype.slice 有什么区别?
function unique(array) { return Array.from(new Set(array)); } var array = [1, 2, 1, 1, '1']; console.log(unique(array)); // [1, 2, "1"]
备注: ①Array.from() 方法从一个类似数组或可迭代对象中创建一个新的数组实例。 ②ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 长这样
var unique = (a) => [...new Set(a)] var array = [1, 2, 1, 1, '1']; unique(array)
① 扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列 数组的扩展
The text was updated successfully, but these errors were encountered:
No branches or pull requests
不用api
思路
1.构建一个新的数组存放结果
2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比
3.若结果数组中没有该元素,则存到结果数组中
code
用ES5
用indexOf的常规操作
思路
建一个空的临时数组,遍历传进来的参数(数组),并用临时数组.indexOf对数组的每一个值做判断,等于 -1表示临时数组没有这个值且收下这个值,否则表示已经有一个这个值了,拒收。
最后,临时数组就是我们要的去重后的数组。
code
稍微优化一下
code
备注:
①Array.prototype 属性表示 Array 构造函数 [] 的原型 ,也就是[]是Array的一个实例, 所以本例子中 arr继承了Array.prototype的unique方法,且unique方法的this指向arr。
Array.prototype
js中 [].slice 与 Array.prototype.slice 有什么区别?
用ES6
常规操作
code
备注:
①Array.from() 方法从一个类似数组或可迭代对象中创建一个新的数组实例。
②ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
长这样
极简操作
code
备注:
① 扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列 数组的扩展
The text was updated successfully, but these errors were encountered: