js中判断对象数组中是否存在某个对象,以及使用判断是否存在某个元素的indecOf()和find()方法
判断数组中是否存在某个元素
1.直接用indexOf(),如果存在则返回当前索引,如果不存在则返回-1;
var arr=[1,2,3,4]
arr.indexOf(3) // 2
arr.indexOf(5) // -1
注意:返回某个指定的字符串在数组中首次出现的位置,如果要查找最后出现的位置,使用lastIndexOf()
2. find():找到第一个符合条件的数组元素,他的参数是一个回调函数,所有的数组元素依次遍历该回调函数,直到找出第一个返回值为true的元素,然后返回该元素,否则返回undefined。
注意:当数组中的元素在测试条件时返回true时,find()返回符合条件的元素,之后的值不会再调用执行函数
注意:find()对于空数组,函数是不执行的;
注意:fund()并没有改变数组的原始值。
arr.find(function(value) {if(value === 要查找的值) {//则包含该元素}
})
3.findIndex()
此方法和find()方法十分相似,返回第一个符合条件的数组元素的位置,如果所有元素都不符合条件,则返回-1.
注意:当数组中的元素在测试条件时返回true,findIndx()返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
注意:findIndex()对于空数组,函数是不会执行的。
注意:findIndex()并没有改变数组的原始值。
判断对象数组
1.只是判断对象的属性是否相同
arr.forEach(item=>{if(item.name=='Alex'){alert('存在这个元素');}
})
2.需要动态添加或删除对象和元素的
const option = {name:'111'}
// 如果数组里面本身不存在这个对象则把这个加进去
if(JSON.stringify(arr).indexOf(JSON.stringify(option))==-1){arr.push(option); // 进行动态的操作
}
需要注意:
例如arr = [{name:'张三', sex:'男'}]
option = {sex:'男', name:'张三'}
利用上述方法检测的话,实际上该数组是存在这个数组对象的,但如果用string的indexOf方法是不能检测对的,用这个方法的时候这个点需要注意
3.设置flag来做判断标识
let flag = true;
let msg = '';
let arr = []
if(arr.length<6){arr.forEach(item=>{if(data.id===item.id){ // 对象里的唯一标识idmsg = '请勿重复添加!'flag = false;}})
}else{msg = '最多添加6个!'flag = false;
}
if(flag){ // 如果满足条件-数组长度小于6,当前添加的值在数组里不存在,就把值添加进去arr.push(data)
}else{ // 否则弹出提示信息alert(msg)
}
5.利用数组的some()方法
var result = arr.some(item=>{if(item.name=='张三'){return true }
})
console.log(result) // 如果arr数组对象中含有name:'张三',就会返回true,否则返回false
if(result){ // 如果存在// do something}
js中判断对象数组中是否存在某个对象,以及使用判断是否存在某个元素的indecOf()和find()方法相关推荐
- 前端JS:判断list(数组)中的json对象是否重复
前端JS:判断list(数组)中的json对象是否重复 <!DOCTYPE html> <html> <head> <meta charset="u ...
- js 加总数组中某一列_js根据对象数组中某一属性值,合并相同项,并对某一属性累加处理...
js根据对象数组中某一属性值,合并相同项,并对某一属性累加处理 Example: 根据code合并数组,并将sl值累加,如下两种方法: let data = [{ code: 1001, name: ...
- js获取对象数组中的id集合
js获取对象数组中的id集合 const ids = Array.from(this.checkList,({ id }) => id); // ["16921C72E0C64002& ...
- js计算对象数组中某个属性合计
js 计算对象数组中某个属性合计 countTotal调用示例: let arr = [{id: 0, price: 199.88},{id: 1, price: 299.88},{id: 2, pr ...
- js 根据id获取数组中对应的对象
js 根据id获取数组中对应的对象 const id = xxxlet obj = array.find(function (e) {return e.id=== id})console.log('o ...
- js合并两个数组中同一类型的type对象
// js合并两个数组中同一类型的type对象 // 接口返回的数据格式 [{dayAt: "2023-01-11"lastAt: "2023-01-11 14:36:3 ...
- 如何拿到对象数组中的某一对象的元素(JS的filter方法)
如何拿到对象数组中的某一对象的元素 在写一个简单的商品管理系统的时候,遇到了一个问题,我接口中需要传递的参数是一个role_id,但是我在页面上显示是角色名称 通过对filter()方法的使用,拿到对 ...
- 判断对象数组中是否存在重复项
需求:判断对象数组中是否存在重复项 解决思路:根据数组去判断是否有重复项. 首先将对象数组转成数组(提取重复的选项) 然后判断数组是否存在重复项即可. 注:此方法适用于单个决定性条件导致重复的对象,多 ...
- JS对象数组中依据某个属性的值分组
问题:需要在对象数组中根据某个属性值进行归类或者分组 const dataList = [{name: 'Apple',type: 'Fruit',price: '¥1.5'},{name: 'Ban ...
- js 删除对象数组中指定元素
操作对象数组中指定条件的元素: 例: let arr = [{createDate: "2021-03-20",id: 1 }, {createDate: "2021-0 ...
最新文章
- 饥荒海难机器人怎么用_饥荒海难机器人作用详解 机器人有什么用
- Git知识点笔记-基本常识
- 可能是.NET领域性能最好的对象映射框架——Mapster
- Python 数据分析三剑客之 Matplotlib(二):文本描述 / 中文支持 / 画布 / 网格等基本图像属性
- 比较好的电脑系统_效果好的筛分移动破碎站有优惠吗?
- python iotextwrapp执行不动_Python tkinter - 第10章 文本控件(Text)方法
- 深入浅出MySQL之优化
- enovia PLM : add new value to SPEO
- 将寄存器放入IOB的方法
- windows批处理脚本bat命令解析【6】常用命令整理
- mysql的information_schema数据库
- Arcgis js featureLayer加载完成之后,对其加载的要素重新定义样式
- wps里表格中间的字怎么置顶_怎么把wps文字放在最中间
- 利用Windows系统自带命令手工搞定病毒
- ORB-SLAM2 --- KeyFrame::AddConnection函数
- 浙大PTA基础编程题目集:7-1 厘米换算英尺英寸
- 最新海豚码支付系统APP监控支付码免签系统源码V6.0
- 华为LiteOS操作系统基础知识入门与内核移植
- 新版mysql改初始密码
- 西安航空学院计算机专业代码,西安航空职业技术学院专业代码
热门文章
- AUTOCAD——图块批量改名
- mysql与sim900a_sim900a和sim800a的区别是什么
- java rhino js类_Rhino -- 基于java的javascript实现
- python进行回归方程显著性检验
- python 视频培训
- 高斯滤波matlab函数,matlab自带函数实现高斯滤波(gauss filter)快速算法
- 开源力量 Linux内核源码深度解析与开发实战
- 六句话,看完新造车的2021
- 请求支付宝渠道报错:40006,Insufficient Permissions,ISV权限不足
- 彻底禁止Win10自动更新工具Windows Update Blocker v1.5 汉化版