1. 程式人生 > >javascript檢測物件中是否存在某個屬性

javascript檢測物件中是否存在某個屬性

檢測物件中屬性的存在與否可以通過幾種方法來判斷。

方法一:使用in關鍵字

該方法可以判斷物件的自有屬性和繼承來的屬性是否存在(in能檢測到原型鏈的屬性)
var cat = {name:'Tom'};
console.log('name' in cat);  //true  自有屬性存在
console.log('weight' in cat); //false
console.log('toString' in cat);  //true   繼承屬性存在
in關鍵字的使用

//陣列中

//Array
var arr = ['cat','pig','dog','monkey','fish'];
console.log(0 in arr);  //true
console.log(4 in arr);  //true
console.log(5 in arr);  //false
console.log('pig' in arr);  //false   必須指定索引號,而不是該索引的值
console.log('length' in arr);  //true  length為該陣列的屬性
//預定義物件
console.log('PI' in Math);   //true
//自定義物件
var cat = {name:'Tom',year:10};
console.log('name' in cat);  //true
console.log('Tom' in cat);  //false
//必須指定一個物件在操作的右邊,比如你可以使用字串建構函式建立字串,而不是指定字串
var color1 = new String('green');
console.log('length' in color1);   //true
	
var color2 ='green';
console.log('length' in color2);   //報措color2 is not a String object
//若使用delete刪除屬性,in操作將返回假
var cat = {name:'Tom',year:10};
delete cat.year;
console.log('year' in cat);   //false
	
var arr = ['cat','pig','dog','monkey','fish'];
delete arr[0];
console.log(0 in arr);   //false
//如果將某個屬性設定為未定義但是不刪除它,in操作將返回真
var cat = {name:'Tom',year:10};
cat.year = undefined;
console.log('year' in cat);   //true

方法二:.使用物件的hasOwnProperty()方法

var obj = new Object();
obj.prop = 'exist';
function changeObj()
{
	obj.newProp = obj.prop;
	delete	obj.prop;
};
console.log(obj.hasOwnProperty('prop'));   // return true  自有屬性存在prop
changeObj();
console.log(obj.hasOwnProperty('prop'));   // return false  自有屬性不存在prop
console.log(obj.hasOwnProperty('toString'));  //return false   這是一個繼承屬性
hasOwnProperty的使用

//物件屬性迭代

var cat = {Name:'Tom'};
for(var name in cat)
{
	if(cat.hasOwnProperty(name))
	{
		alert('這隻cat'+name+'的名字是'+cat[name]);	
	}
	else
	{
		alert(name);	
	}
}

//使用hasOwnProperty作為屬性名
var obj = {
  	hasOwnProperty: function()
	{
    		return false;
  	},
  	bar: 'Hello'
};
console.log(obj.hasOwnProperty('bar')); //false
	
console.log(({}).hasOwnProperty.call(obj,'bar')); //true
	
console.log(Object.prototype.hasOwnProperty.call(obj, 'bar'));<span style="font-family: Arial, Helvetica, sans-serif;">//true</span>

方法三:.使用undefined方法

自有屬性和繼承屬性均可判斷。
var cat = {name:'Tom'};
console.log(cat.name!==undefined);  //true  
console.log(cat.weight!==undefined); //false
console.log(cat.toString!==undefined);  //true 

該方法存在一個問題,如果屬性的值就是undefined的話,該方法不能返回想要的結果,如下。

var cat = {name:'undefined'};
console.log(cat.name!==undefined);  //false   屬性存在 但是值是undefined  
console.log(cat.weight!==undefined); //false
console.log(cat.toString!==undefined);  //true   


相關推薦

javascript檢測物件是否存在某個屬性

檢測物件中屬性的存在與否可以通過幾種方法來判斷。 方法一:使用in關鍵字 該方法可以判斷物件的自有屬性和繼承來的屬性是否存在(in能檢測到原型鏈的屬性) var cat = {name:'Tom'};

javascript檢測物件是否存在某個屬性

檢測物件中屬性的存在與否可以通過幾種方法來判斷。1.使用in關鍵字。該方法可以判斷物件的自有屬性和繼承來的屬性是否存在。var o={x:1}; "x" in o; //true,自有屬性存在 "y" in o; //false "

js判斷json物件是否含有某個屬性

for(var item in data.resultObject) { if(!data.resultObject[item].hasOwnProperty("startTime")){

JavaScript 獲取物件第一個屬性

使用 Object.keys(object) 可以取出屬性名為陣列,但會打亂順序 嚴格意義上物件中是隻有對映關係而沒有順序的,但是在儲存結構裡是有順序的,如果想獲取儲存結構裡的第一個屬性可以使用for

檢查物件或是類存在該屬性 property_exists

public function __set($name ,$value) { if(property_exists($this,$name)) //這句,賦值前判斷是否已經存在這個屬性,如果存在進行賦

js篇-判斷陣列物件是否含有某個值,並返回該條資料

專案背景需求是: 已知: var a=[{name:'jenny',age:18},{name:'john',age:19},{name:'jack',age:20}] var b ='jenny' 返回: {name:'jenny',age:18} 解題思路:現將陣列轉成字串,判斷改陣列中是否存

物件轉JSONArray,JSONObject[包括物件日期格式化,屬性過濾]

建立時間轉換器import java.text.SimpleDateFormat;  import java.util.Date;  import java.util.Locale;  import net.sf.json.JsonConfig;  import net.sf

判斷陣列物件是否包含某個物件,判斷2個物件是否相等

var arr =[ {name:'zhangsan'}, {name:'lisi'}, {name:'wangwu'} ]; var json1 = {name:"zhangsan"}; // 方法一:(相容ie8) console.log(JSON.stri

dom物件常見節點的屬性

<!DOCTYPE html> <html lang="en">     <head>         <meta charset="utf-8">         <script>         onload

spring的注入引數(bean物件又有bean屬性),beans.xml配置

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"     xmlns:xsi="http://www.w3.o

re模組match物件的方法和屬性

match物件的方法和屬性 屬性和方法 描述 pos 搜尋的開始位置 endpos 搜尋的結束位置 string 搜尋

按照ListObject的某個屬性進行分組

/**  *   * 按照List中Object的某個屬性contNo,進行分組  *  * @author fuqin  * create on 2009-12-11  *  * @param list  * @return  */ public static Map ge

使用Javascript判斷元素是否含有某個樣式

tip:引入了Moment.js格式化前端頁面顯示時間 假設我們有如下元素 <div id="LL" class="a b hello-world"></div> 1.簡單正則匹配法 即使用正則判斷單詞邊界的方式判斷是

怎麽判斷對象obj是否含有某個屬性以及怎麽刪除對象某個屬性

屬性 con efi [ ] var string let bject 判斷 一:判斷對象object中是否含有某個屬性 1:點( . )或者方括號( [ ] )(可以根據 Obj.x !== undefined 的返回值 來判斷Obj是否有x屬性) // 創建對象 let

javascript對一個物件陣列按照物件某個屬性進行排序

在javascript中,物件和陣列是兩種不同的型別,這和php中的陣列概念不同。在javascript中,也有一些精妙的演算法,用來對一些物件進行排序。我在面試迅雷的時候,也拿到一道題,當時做題的時候考慮到時間,沒有去仔細研究,回來後再讀了一些方法,就知道真正的考點在哪裡了。 我們現在有一組“學

JavaScript 深入瞭解物件屬性

轉載:JavaScript 深入瞭解物件中的屬性 JavaScript 深入瞭解物件中的屬性   本篇主要介紹JS中物件的屬性,包括:屬性的分類、訪問方式、檢測屬性、遍歷屬性以及屬性特性等內容。 目錄 1. 介紹:描述屬性的命名方式、查詢路徑以及分類 2. 屬

根據物件某個屬性進行 物件排序

遇到涉及到物件排序的問題,之前做過一次 又忘了,再次做一次記錄 // 物件類 public class PlayerRankVoData { public int id; public in

根據物件某個屬性,查詢List集合是否包該屬性物件集合。

package com.crland.ims.service.util; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.

JavaScript列舉物件屬性

有時候,拿到別人的程式碼,我們並不知道某一個物件擁有哪些屬性和屬性值,這個時候別慌,我們可以通過for   in  語句來獲取物件裡的屬性和屬性值,(最底部有原始碼,可複製) 語法:for(變數名  in  物件名){     (迴

根據物件某一屬性進行升序降序排序的javascript實現

背景知識: sort() 方法用於對陣列的元素進行排序,並返回陣列。預設排序順序是根據字串Unicode碼點。 語法:arrayObject.sort(sortby);引數sortby可選。規定排序順序。必須是函式。 注:如果呼叫該方法時沒有使用引數,將按