一、创建新数组,把原数组中不重复的值存到新数组中
1. 利用indexOf()方法:可返回某个指定的字符串值在字符串中首次出现的位置。
下面看一个简单例子,熟悉一下indexOf() 方法的用法。
let str = 'orange';
str.indexOf('o');// 0
str.indexOf('n');// 3
str.indexOf('c');// -1
//这里0和3分别是o和n在字符串中首次出现的位置,起始下标是0;而-1代表未匹配到
//不要问为什么没有匹配到得到的值是-1而不是null或undefined,那你去问制定这个规则的人吧,一脸无奈!
(1)利用indexOf()方法判值
<template>
<div>文章管理
<div @click="homeHandle">Home</div>
</div>
</template>
<script>
export default {
name: "articleManagement",
data() {
return {}
},
methods: {
homeHandle() {
let arr = [1, 3, 5, 5, 6, 7, 8, 8, 9, 0, 0];
let newArr = []; //创建一个新数组来接收不重复的值
if (!Array.isArray(arr)) { //判断arr是否为数组
console.log('请传入数组!');
return;
}
for (let i = 0; i < arr.length; i++) { //遍历原数组
if (newArr.indexOf(arr[i]) == -1) { //判断新数组中是否已有相同的值
newArr.push(arr[i]); //若没有,则推入新数组中
}
}
console.log(newArr); // [1, 3, 5, 6, 7, 8, 9, 0]
return newArr; //返回新数组
}
}
}
</script>
<style scoped>
</style>
(2)利用indexOf()方法判下标
<template>
<div>文章管理
<div @click="homeHandle">Home</div>
</div>
</template>
<script>
export default {
name: "articleManagement",
data() {
return {}
},
methods: {
homeHandle() {
let arr = [1, 3, 5, 5, 6, 7, 8, 8, 9, 0, 0];
let newArr = []; //创建一个新数组来接收不重复的值
if (!Array.isArray(arr)) { //判断arr是否为数组
console.log('请传入数组!');
return;
}
for (let i = 0; i < arr.length; i++) { //遍历原数组
if (arr.indexOf(arr[i])===i) { //如果当前数组的第i项在当前数组中第一次出现的位置是i
newArr.push(arr[i]); //推入新数组中,否则说明是重复的
}
}
console.log(newArr); // [1, 3, 5, 6, 7, 8, 9, 0]
return newArr; //返回新数组
}
}
}
</script>
<style scoped>
</style>
2. 利用includes()方法判值
includes() 方法:用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
下面看一个简单例子,熟悉一下includes() 方法的用法。
[1, 2, 3].includes(2) // true
[1, 2, 3].includes(4) // true
[1, 2, NaN].includes(NaN) // true<template>
<div>文章管理
<div @click="homeHandle">Home</div>
</div>
</template>
<script>
export default {
name: "articleManagement",
data() {
return {}
},
methods: {
homeHandle() {
let arr = [1, 3, 5, 5, 6, 7, 8, 8, 9, 0, 0];
let newArr = []; //创建一个新数组来接收不重复的值
if (!Array.isArray(arr)) { //判断arr是否为数组
console.log('请传入数组!');
return;
}
for (let i = 0; i < arr.length; i++) { //遍历原数组
if (!newArr.includes(arr[i])) { //判断新数组中是否已有相同的值
newArr.push(arr[i]); //若没有,则推入新数组中
}
}
console.log(newArr); // [1, 3, 5, 6, 7, 8, 9, 0]
return newArr; //返回新数组
}
}
}
</script>
<style scoped>
</style>
3. 利用sort()先排序
<template>
<div>文章管理
<div @click="homeHandle">Home</div>
</div>
</template>
<script>
export default {
name: "articleManagement",
data() {
return {}
},
methods: {
homeHandle() {
var arr = [1, 3, 5, 5, 6, 7, 8, 8, 9, 0, 0];
var newArr = []; //创建一个新数组来接收不重复的值
if (!Array.isArray(arr)) { //判断arr是否为数组
console.log('请传入数组!');
return;
}
arr = arr.sort(); //先对原数组进行排序
for (var i = 0; i < arr.length; i++) { //遍历原数组
if (arr[i] !== arr[i - 1]) { //相邻去除
newArr.push(arr[i]);
}
}
console.log(newArr); // [1, 3, 5, 6, 7, 8, 9, 0]
return newArr; //返回新数组
}
}
}
</script>
<style scoped>
</style>
二、两次遍历数组,去除重复元素。
利用双重for循环,然后再利用splice()方法删除重复元素。
<template>
<div>文章管理
<div @click="homeHandle">Home</div>
</div>
</template>
<script>
export default {
name: "articleManagement",
data() {
return {}
},
methods: {
homeHandle() {
var arr = [1, 3, 5, 5, 6, 7, 8, 8, 9, 0, 0];
if (!Array.isArray(arr)) { //判断arr是否为数组
console.log('请传入数组!');
return;
}
for (var i = 0; i < arr.length; i++) { //遍历原数组
for(var j = i+1;j<arr.length;j++){
if(arr[i]==arr[j]){//数组中i下标后的j上有重复值,则用splice方法(可改变原数组)删除
arr.splice(j,1);
j--;//删除后下标-1
}
}
}
console.log(arr); // [1, 3, 5, 6, 7, 8, 9, 0]
return arr; //返回数组
}
}
}
</script>
<style scoped>
</style>
三、利用filter()方法。
filter针对数组起过滤作用筛选出符合条件的一个或多个元素
<template>
<div>文章管理
<div @click="homeHandle">Home</div>
</div>
</template>
<script>
export default {
name: "articleManagement",
data() {
return {}
},
methods: {
homeHandle() {
var arr = [1, 3, 5, 5, 6, 7, 8, 8, 9, 0, 0];
var newArr = arr.filter((item, index, self) => {
// item: 数组每一项的值
// index: 每一项的下标
// self: 当前数组
return self.indexOf(item) === index;
})
//或
//var newArr = arr.filter((item, index, self) => self.indexOf(item) === index);
console.log(newArr) //[1, 3, 5, 6, 7, 8, 9, 0]
}
}
}
</script>
<style scoped>
</style>
四、利用ES6中的Set()方法。
Set()方法:ES6中的set类似一个数组,但是其中的值都是唯一的,Set本身是一个构造函数,用来生成 Set 数据结构。
var arr = [1, 3, 5, 5, 6, 7, 8, 8, 9, 0, 0];
//set函数可以接受一个数组作为参数,用来初始化
var a = new Set(arr);
console.log(a) // Set {_c: Set(8)}
console.log(...a) // 1 3 5 6 7 8 9 0
console.log([...a]) // [1, 3, 5, 6, 7, 8, 9, 0]
//当然,当遇到数组去重的时候,可以这样:
[...new Set(Array)];
//如果用于去除字符串里的重复字符,也是可以的:
[...new Set('abcdefaabccd')].join(' ');
1. 结合扩展运算符(...)
<template>
<div>文章管理
<div @click="homeHandle">Home</div>
</div>
</template>
<script>
export default {
name: "articleManagement",
data() {
return {}
},
methods: {
homeHandle() {
var arr = [1, 3, 5, 5, 6, 7, 8, 8, 9, 0, 0];
arr=[...new Set(arr)];
console.log(arr)// [1, 3, 5, 6, 7, 8, 9, 0]
}
}
}
</script>
<style scoped>
</style>
2. 结合Array.from()方法
Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组。
<template>
<div>文章管理
<div @click="homeHandle">Home</div>
</div>
</template>
<script>
export default {
name: "articleManagement",
data() {
return {}
},
methods: {
homeHandle() {
var arr = [1, 3, 5, 5, 6, 7, 8, 8, 9, 0, 0];
arr = Array.from(new Set(arr));//Array.from将Set结构的数据转换为真正的数组
console.log(arr)//[1, 3, 5, 6, 7, 8, 9, 0]
}
}
}
</script>
<style scoped>
</style>js 数组返回索引位置
转载文章标签 js 数组返回索引位置 javascript 前端 数组 i++ 文章分类 数据仓库 大数据
上一篇:下载容器内部的文件到本地
下一篇:grep一次查询多个关键字
-
js 返回对象在数组中的索引
数据类型:能够表示并操作的值的类型。JavaScript的数据类型分为两类:(1) 原始类型(primitive type):u 数字(Number)· 所有数字均用64位浮点数值表示,然而实际的操作(比如数组索引、位运算符等)则是基于32位整数;·  
js 返回对象在数组中的索引 javascript 严格模式 字符串 全局对象 -
一、十天速通Java面试(第三天)
本文系统梳理了Java核心概念与关键技术点,主要包括:线程本地存储
面试 职场和发展 Java Java面试 内部类 -
智能缓存架构:AI预测数据热点
智能缓存架构通过“预测数据热点”实现了缓存策略的主动化与动态化,解决了传统规则驱动缓存的滞后与低效问题。在高并发、高波动的业务环境下,它是系统稳定性和用户体验的关键保障。
#缓存 #架构 #人工智能 #系统优化 #架构设计
















