JS 数组去重的方法、求数组每一项之和方法、字符抽取、数组方法案例

一、数组去重

示例:定义一个数组,去重

1.indexOf()方法

indexOf()方法返回在数组中可以找到第一个给定元素的第一个索引,如果不存在,则返回-1。

let arr = [1, 2, 3, 4, 6, 8, 1, 7, 6, 2];
let arr1 = arr.filter((item, index) => {
    return arr.indexOf(item) === index;
});
console.log(arr1);
  •  使用filter方法过滤出indexOf()方法找到数组元素的第一个索引等于当前索引的数组元素,放到一个新数组里并返回。

也可以这样写:

let arr = [1, 2, 3, 4, 6, 8, 1, 7, 6, 2];
let arr1 = [];
arr.forEach((item) => {
     if (arr1.indexOf(item) == -1) {
          arr1.push(item);
      }
   });
console.log(arr1);
  • 首先声明一个新的空数组,使用forEach()方法循环原数组的每一项,让新数组使用indexOf方法,如果新数组里没有原素组给定的元素就把这个元素依次放入新数组中

2. includes()方法

includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false。 

let arr = [1, 2, 3, 4, 6, 8, 1, 7, 6, 2];
let arr1 = [];
arr.forEach((it) => {
   if (arr1.includes(it)) return;
        arr1.push(it);
   });
console.log(arr1);

 3.Array.from()

let arr = [1, 2, 3, 4, 6, 8, 1, 7, 6, 2];
let arr1 = Array.from(new Set(arr));
console.log(arr1);

 二、求数组每一项之和

1.for循环

let arr = [1, 2,4,5,12,56];
let sum = 0;
for (let i = 0; i < arr.length; i++) {
    sum += arr[i];
}
console.log(sum);
  • 定义变量sum、i 等于0,使用for循环,通过数组索引让数组的每一项元素依次循环相加,并赋值给sum

2. forEach

let arr = [1, 2, 4, 5, 12, 56];
let sum = 0;
arr.forEach((item) => {
    sum += item;
});
console.log(sum);
  • 定义一个变量sum=0,使用forEach循环数组的每一项并依次相加赋值给sum 

 3.reduce方法

let arr = [1, 2, 4, 5, 12, 56];
let sum = arr.reduce((acc, item) => {
    return acc += item;
}, 0);
console.log(sum);
  • acc是索引,item是数组的每一项,0代表acc的第一次取值,第二次循环acc是上一次计算的结果,然后将每次循环的结果相加赋值给一个已定义变量sum,接收求和值

 注:以上方法解释说明如有不当,请见谅。

三、拿取指定字符

示例:拿取一个链接里的指定内容,拿取:路由重定向

let url ="https://so.csdn.net/so/search?spm=1001.2014.3001.4501&q=路由重定向&t=&u=";
let str = url.split("&")[1].split("=")[1];
console.log(str);
  • 使用split方法将这个字符串以&符分隔成数组元素,并拿取索引为1的数组元素,即:q=路由重定向,然后用=符分隔,再次拿取索引为1的数组元素为:路由重定向

四、 数组方法案例

1.获取一个随机数,按顺序插入到数组中,定义数组 let arr = [2, 4, 5];

let arr = [2, 4, 5];
let num = Math.round(Math.random() * 10);
arr.push(num);
let arr1 = arr;
console.log(arr1.sort());

2.把所有status 为true的 过滤出来拿到拼接的name,最终效果:奥特曼1,奥特曼3,奥特曼4

let arr = [
    {name: "奥特曼1",id: 1,status: true,},
    {name: "奥特曼2",id: 2,status: false,},
    {name: "奥特曼3",id: 3,status: true,},
    {name: "奥特曼4",id: 3,status: true,},
    {name: "奥特曼5",id: 3,status: false,},
  ];
let arr1 = arr.filter((it) => it.status);
let res = [];
arr1.forEach((item) => res.push(item.name));
console.log(res.join(","));

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScript中,对象数组可以通过以下几种方法来实现: **1. 使用for...in循环:** 这是最直接的方式,因为对象的属性可以通过for...in循环进行遍历,从而确保没有复的对象。这种方法在处理大量数据时可能会很慢,因为它需要对每个对象进行遍历。 ```javascript let arr = [{id: 1}, {id: 2}, {id: 3}, {id: 1}]; let uniqueArr = []; for (let obj of arr) { for (let key in obj) { if (!uniqueArr.includes(obj[key])) { uniqueArr.push(obj[key]); } } } ``` **2. 使用Object.assign()方法:** Object.assign()方法可以将所有可枚举的自身属性从一个或多个源对象复制到目标对象中,并且不会改变原始对象。通过将所有对象合并到一个新的对象中,你可以去除复的对象。这种方法可能会丢失原始对象的某些属性,因此需要谨慎使用。 ```javascript let arr = [{id: 1}, {id: 2}, {id: 3}, {id: 1}]; let uniqueArr = []; const mergedObj = {}; for (let obj of arr) { Object.assign(mergedObj, obj); for (let key in mergedObj) { if (!uniqueArr.includes(mergedObj[key])) { uniqueArr.push(mergedObj[key]); } } } ``` **3. 使用Set数据结构:** Set数据结构是一种无序的集合,它只允许包含唯一的元素。你可以将数组转换为Set,然后使用values()方法将其转换回数组。由于Set中的元素是唯一的,因此这种方法可以去除复的对象。需要注意的是,这种方法只能用于处理原始数据类型为数字、字符串或布尔值的对象。 ```javascript let arr = [{id: 1}, {id: 2}, {id: 3}, {id: 1}]; let uniqueArr = Array.from(new Set(arr)); ``` **4. 使用Array.prototype.filter()方法:** 这是最常用的方法之一,它通过创建一个新的数组来过滤出唯一的元素。这个方法需要手动编写去逻辑,但是它的灵活性和可读性都非常好。 ```javascript let arr = [{id: 1}, {id: 2}, {id: 3}, {id: 1}]; let uniqueArr = arr.filter((item, index, self) => self.indexOf(item) === index); ``` 以上就是几种在JavaScript中处理对象数组方法,你可以根据实际情况选择最适合你的方法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值