js数组

1.数组检测

typeof 返回object,不能区分数组和对象

instanceof

例:if (value instanceof Array){
   //对数组执行某些操作
  }

不适用于多个执行环境下,如网页中包含多个框架

Array.isArray() 适用于多个执行环境下,但可能低版本浏览器不兼容

 

2.转换方法

toString()  返回字符串

toLocaleString()  一般情况下返回和toString相同

valueOf()  返回数组

join() 接收一个参数,用作分隔符的字符串,然后返回包含所有数组项的字符串,不传默认逗号分隔

例:

let arr=[1,2,3,4,5,6]

console.log(arr.toString())    //1,2,3,4,5,6

console.log(arr.toLocaleString())  //1,2,3,4,5,6

console.log(arr.valueOf())  //[1, 2, 3, 4, 5, 6]

console.log(arr.join())  //1,2,3,4,5,6

console.log(arr.join('-'))  //1-2-3-4-5-6

 

3.栈丶队列

push()  向数组末尾添加新元素,返回数组的length

pop()   删除数组最后一个元素,返回移除的项

unshift() 向数组开头添加新元素,返回数组的length

shift()  删除数组第一个元素,返回移除的项

 

4.排序

sort() 数组从小到大排序,可传入排序函数

reverse() 反转数组

例(排序函数):

function compare(value1, value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}

简化:

function compare(value1, value2){
return value2 - value1;
}

 

5.操作方法

不会改变原数组:

 concat()  合并数组和参数,参数可以是元素或数组,返回新的数组

 slice()  分割数组,返回新的数组。可以接收2个参数,传一个参数(i),返回从i到结尾的数组(包括i);传2个参数(i,j),返回从i到j的数组(包括i,不包括j)

 

会改变原数组:

splice()   返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)。

  删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。
例如, splice(0,2) 会删除数组中的前两项。
  插入:可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、0(要删除的项数)
和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。例如,
splice(2,0,"red","green") 会从当前数组的位置 2 开始插入字符串 "red" 和 "green" 。
  替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数:起
始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。例如,
splice (2,1,"red","green") 会删除当前数组位置 2 的项,然后再从位置 2 开始插入字符串
"red" 和 "green" 。

 

6.查找

indexOf()  从数组的开头(位置 0)开始向后查找

lastIndexOf()  从数组的末尾开始向前查找

 indexOf() 和 lastIndexOf() 这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引,都返回要查找的项在数组中的位置,或者在没找到的情况下返回1。

 

7. 迭代方法

ECMAScript 5 为数组定义了 5 个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响 this 的值。传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置和数组对象本身。根用的方法不同,这个函数执行后的返回值可能会也可能不会影响方法的返回值。以下是这 5 个迭代方法的作用。
 every() :对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true 。
 filter() :对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
 forEach() :对数组中的每一项运行给定函数。这个方法没有返回值。
 map() :对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
 some() :对数组中的每一项运行给定函数,如果该函数对任一项返回 true ,则返回 true 。
以上方法都不会修改数组中的包含的值。
在这些方法中,最相似的是 every() 和 some() ,它们都用于查询数组中的项是否满足某个条件。对 every() 来说,传入的函数必须对每一项都返回 true ,这个方法才返回 true ;否则,它就返回false 。而 some() 方法则是只要传入的函数对数组中的某一项返回 true ,就会返回 true 。

例子:

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item, index, array){
return (item > 2);
});
alert(everyResult); //false
var someResult = numbers.some(function(item, index, array){
return (item > 2);
});
alert(someResult); //true

 

var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item, index, array){
return (item > 2);
});
alert(filterResult); //[3,4,5,4,3]

 

var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item, index, array){
return item * 2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2]

 

var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item, index, array){
//执行某些操作
});

 

8.归并

 reduce()   从数组的第一项开始

 reduceRight()  从数组的最后一项开始

这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。传给 reduce() 和 reduceRight() 的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。

例子:(使用 reduce() 还是 reduceRight() ,主要取决于要从哪头开始遍历数组)

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15

 

var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值