JavaScript判断对象数组中是否存在某个对象【转】
1. 如果要判断数组中是否存在某个元素的话很好判断,直接用数组的indexOf方法就好,存在返回当前索引不存在返回-1
var arr=[1,2,3,4]
arr.indexOf(3) //
arr.indexOf(5) // -1
2. 要只是判断的话是可以遍历后判断对象的属性是否相同的,像这种:
arr.forEach(item=>{
if(item.name=='Alex'){
alert('存在这个元素');
}
})
3. 但实际中往往是需要动态添加或删除对象或元素的,用这个方法的话不好操作,可能会添加或删除掉多个,可以是用string的indexOf方法来判断
const option = {name:'111'}
// 如果数组里面本身不存在这个对象则把这个加进去
if(JSON.stringify(arr).indexOf(JSON.stringify(option))==-1){
arr.push(option); // 进行动态的操作
}
这个判断是可以,但存在一个问题需要注意一下,如果对象的顺序不一样,是不能检测到重复的
例如arr = [{name:'张三', sex:'男'}]
option = {sex:'男', name:'张三'}
利用上述方法检测的话,实际上该数组是存在这个数组对象的,但如果用string的indexOf方法是不能检测对的,用这个方法的时候这个点需要注意
4. 还有一个常用方法是设一个flag来做判断的标识
let flag = true;
let msg = '';
let arr = []
if(arr.length<6){
arr.forEach(item=>{
if(data.id===item.id){ // 对象里的唯一标识id
msg = '请勿重复添加!'
flag = false;
}
})
}else{
msg = '最多添加6个!'
flag = false;
}
if(flag){ // 如果满足条件-数组长度小于6,当前添加的值在数组里不存在,就把值添加进去
arr.push(data)
}else{ // 否则弹出提示信息
alert(msg)
}
5. 利用数组API some来判断
var result = arr.some(item=>{
if(item.name=='张三'){
return true
}
})
console.log(result) // 如果arr数组对象中含有name:'张三',就会返回true,否则返回false
if(result){ // 如果存在
// do something
}
【转】:https://www.cnblogs.com/leiting/p/9253461.html
JavaScript判断对象数组中是否存在某个对象【转】的更多相关文章
- js判断对象数组中是否存在某个对象
1. 如果要判断数组中是否存在某个元素的话很好判断,直接用数组的indexOf方法就好,存在返回当前索引不存在返回-1 var arr=[1,2,3,4] arr.indexOf(3) arr.ind ...
- C#实现如何判断一个数组中是否有重复的元素 返回一个数组升序排列后的位置信息--C#程序举例 求生欲很强的数据库 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework
C#实现如何判断一个数组中是否有重复的元素 如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hasht ...
- C#中怎么判断一个数组中是否存在某个数组值
(1) 第一种方法: ,,}; ); // 这里的1就是你要查找的值 ) // 不存在 else // 存在 (2) 第二种方法: string[] strArr = {"a",& ...
- C#实现如何判断一个数组中是否有重复的元素
如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hashtable的Contains方法进行查找 /// ...
- PHP array_key_exists() 函数(判断某个数组中是否存在指定的 key)
定义和用法 array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false. 语法 array_key_exists(ke ...
- js对象数组中的某属性值 拼接成字符串
js对象数组中的某属性值 拼接成字符串 var objs=[ {id:1,name:'张三'}, {id:2,name:'李四'}, {id:3,name:'王五'}, {id:4,name:'赵六' ...
- react找到对象数组中指定的值
找到对象数组中指定的值var array = [ { label: "Custom", value: "0" }, ...
- JavaScript 删除某个数组中指定的对象和删除对象属性
Javascript: 删除指定对象:使用过程中只适合删除对象,如果数组中添加的是类型Function的话是删除不了的. function removeObjWithArr(_arr,_obj) { ...
- JavaScript 删除某个数组中指定的对象
返回对象在数组中的下标: _arr表示一个Array数组,里面包括了很多的对象如下图: _obj表示某一个数组对象 function getIndex (_arr,_obj) { var le ...
随机推荐
- 集合:Collection
why ? when ? how ? what ? Java 集合框架图 由上图我们可以看到,Java 集合主要分为两类:Collection 和 Map. Collection 接口 遍历 Coll ...
- 关于Linux字符集的查看及修改
一·查看字符集 字符集在系统中体现形式是一个环境变量,其查看当前终端使用字符集的方式可以有以下几种方式: 1.[root@ ~]# echo $LANG en_US.UTF-8 ...
- mac下Redis安装和使用
前言 本篇文章主要讲述了Mac下Redis的安装和使用的经验,并将python如何操作Redis做了简单介绍. 1. redis 安装 和启动 1.1 用brew安装 查看系统是否已经安装了Redis ...
- vue子组件向父组件传递参数的基本方式
子组件: this.$emit('transferUrl', this.picUrl) 父组件: 引入子组件<pics @transferUrl="gettransferUrl&quo ...
- E - Cricket Field
Description Once upon a time there was a greedy King who ordered his chief Architect to build a fi ...
- HDU 1210
感觉就是乱搞找规律 自己写几组数据 本来开始是想着把 n 个数字每次回到原来位置各需要多少次,然后取它们的最小公倍数就好了 但是数据写着写着发现每一个数回到原来位置次数都是一样的,那么就简单了,直接第 ...
- 1827 tarjan+缩点
#include<stdio.h> #include<stack> #include<iostream> #include<string.h> #inc ...
- log4j.properties的简单配置和使用
log4j.properties // 日志文件名不能随便写, 是properties文件 log4j.rootLogger=INFO, Console //表示INFO级别 输出到控制台 #Con ...
- Maven使用GitHub项目目录搭建远程仓库
使用GtiHub的项目目录搭建第三方远程仓库,能免除使用服务器搭建Nexus私服,而且空间也是免费的.但是这种方式只适合小规模发布,毕竟搜索和版本控制是一个问题,如果需要更复杂的功能就只能转向Nexu ...
- addEventListener()、attachEvent()和removeEventListener()、detachEvent()的差别?
addEventListener()和attachEvent()的差别? addEventListener:在HTML元素上绑定事件,FF.chrome.opera.safari及IE9浏览器以上的支 ...