js如何判斷對象數(shù)組中是否存在某個對象
js判斷對象數(shù)組中是否存在某個對象
1. 判斷數(shù)組中是否存在某個元素
直接用數(shù)組的indexOf方法就好,存在返回當前索引不存在返回-1
var arr=[1,2,3,4] arr.indexOf(3) // 2 arr.indexOf(5) // -1
2. 遍歷后判斷對象的屬性是否相同
arr.forEach(item=>{
? ? if(item.name==='Alex'){
? ? ? ? alert('存在這個元素');
? ? }
})3. 動態(tài)添加或刪除對象或元素的
用這個方法的話不好操作,可能會添加或刪除掉多個,可以是用string的indexOf方法來判斷
const option = {name:'111'}
// 如果數(shù)組里面本身不存在這個對象則把這個加進去
if(JSON.stringify(arr).indexOf(JSON.stringify(option))===-1){
? ? ? ? ? ?arr.push(option); // 進行動態(tài)的操作
}這個判斷是可以,但存在一個問題需要注意一下,如果對象的順序不一樣,是不能檢測到重復的
例如arr = [{name:'張三', sex:'男'}]
option = {sex:'男', name:'張三'}
利用上述方法檢測的話,實際上該數(shù)組是存在這個數(shù)組對象的,但如果用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){ // 如果滿足條件-數(shù)組長度小于6,當前添加的值在數(shù)組里不存在,就把值添加進去
? ? arr.push(data)
}else{ // 否則彈出提示信息
? ? alert(msg)
}5. 利用數(shù)組API some來判斷
var result = arr.some(item=>{
? ?if(item.name==='張三'){
? ? ? return true?
? }?
})
// if 可以省略
var result = arr.some(item=>item.name==='張三')
console.log(result) // 如果arr數(shù)組對象中含有name:'張三',就會返回true,否則返回false
if(result){ // 如果存在
? // do something
?}js對象數(shù)組根據(jù)某一屬性查找對象
js對象數(shù)組[{name: "zhangsan", age: 20}, {name: "lisi", age: 30}], 如果想查找name是zhangsan的這個對象,傳統(tǒng)方法可以根據(jù)for+if條件遍歷,也可以用map重新構造,或者組裝新對象。
1. 組裝新對象
?list.forEach(function (item) {
? ?selectObj[item.name] = item
?})selectObj新對象結構為:{"zhangsan": {name: "zhangsan", age: 20}, "lisi": {name: "lisi", age: 30}}, 通過selectObj[zhangsan]即可獲取。
2. 或者使用es6中的新特性
list.find(item => item.name == "zhangsan")
其他的比如filter, some, every方法也都很好用。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
javascript判斷ie瀏覽器6/7版本加載不同樣式表的實現(xiàn)代碼
ie6/ie7的兼容問題很讓人苦惱,我們可以針對這兩個版本的瀏覽器單獨寫獨立的樣式表,來解決兼容問題。這里的例子以判斷ie6與ie7來加載不同的樣式表2011-12-12
bootstrap——bootstrapTable實現(xiàn)隱藏列的示例
本篇文章主要介紹了bootstrapTable實現(xiàn)隱藏列的示例,具有一定的參考價值,有興趣的可以了解一下。2017-01-01

