1. 程式人生 > >js 判斷物件是否為空陣列物件

js 判斷物件是否為空陣列物件

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<!DOCTYPE html>
<%
String path = request.getContextPath();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>入門zTree</title>
<link rel="stylesheet" href="<%=path%>/css/zTreeStyle/zTreeStyle.css"
type="text/css">
<script type="text/javascript" src="<%=path%>/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript"
src="<%=path%>/js/jquery.ztree.core.min.js"></script>
<script type="text/javascript"
src="<%=path%>/js/jquery.ztree.excheck.min.js"></script>
</head>
<body>
<script>
/* function zTreeOnCheck(event, treeId, treeNode) {
    alert(treeNode.tId + ", " + treeNode.name + "," + treeNode.checked);
};
 */var zTree;
 var nodesss;
 /* let ztreeDoubleClick=(event,treeId,treeNode)=>
{
treeNode= $.fn.zTree.getZTreeObj("user_tree");
   return alert(treeNode + treeNode.tId + ", " + treeNode.name+"isRoot");
} */

var setting = {
view : {
dblClickExpand : true,//雙擊節點時,是否自動展開父節點的標識
showLine : true,//是否顯示節點之間的連線
fontCss : {
'color' : 'black',
'font-weight' : 'bold'
},//字型樣式函式
selectedMulti : true
//設定是否允許同時選中多個節點
},
check : {
/* Y 屬性定義 checkbox 被勾選後的情況; 
N 屬性定義 checkbox 取消勾選後的情況; 
"p" 表示操作會影響父級節點; 
"s" 表示操作會影響子級節點。 */
chkboxType: { "Y": "s", "N": "s" },
chkStyle : "radio",//複選框型別
enable : true
//每個節點上是否顯示 CheckBox 
},
data : {
simpleData : {//簡單資料模式
enable : true,
idKey : "id",
pIdKey : "pId",
rootPId : ""
}
},
callback : {
onDblClick: onDbClickfunction
}

};
function onDbClickfunction(event, treeId, treeNode) {


nodesss = treeNode;
//alert(treeNode.name);


//alert(nodesss.name);


//確定當前選中的節點


// console.log(nodesss);
//console.log(treeNode);
var treeObj=$.fn.zTree.getZTreeObj("user_tree");
//var nodes=treeObj.getSelectedNodes();
//var nodes = treeObj.getNodesByParamFuzzy("name", "admin", null);
var nodes = treeObj.getNodes();


//console.log(nodesss);
console.log(nodesss);
var jsonData;
$.ajax({
async:false,
cache:false,
data:{"pid":nodesss.id},
type:'POST',
dataType:'json',
url:"<%=path%>/ztree/childrenZtree",
error:function(){
console.log("失敗了");
},
success:function(data){
console.log(data);
var b = (JSON.stringify(data) == "[]");
alert(b);//true
jsonData=data;
}
});
treeObj.addNodes(nodesss,jsonData,false);
//console.log(jsonData);
treeObj.reAsyncChildNodes(nodesss, "refresh",false,chenggong());




}
var chenggong=()=>console.log("成功了");



</script>
<p class="zTreeDemoBackground left"></p>
<shiro:user></shiro:user>
<ul id="user_tree" class="ztree"
style="border: 1px solid #617775; overflow-y: scroll; height: 500px;"></ul>
<p></p>
<!-- <script>
var zNodes = [ {
id : 1,
pId : 0,
name : "test 1",
open : false
}, {
id : 11,
pId : 1,
name : "test 1-1",
open : true
}, {
id : 111,
pId : 11,
name : "test 1-1-1"
}, {
id : 112,
pId : 11,
name : "test 1-1-2"
}, {
id : 12,
pId : 1,
name : "test 1-2",
open : true
}, ];


$(document).ready(function() {
$.fn.zTree.init($("#user_tree"), setting, zNodes);
});

</script> -->
<script>
$(document).ready(function(){
    onLoadZTree();
});
 
/**
* 載入樹形結構資料
*/
function onLoadZTree(){
    var treeNodes;
    $.ajax({
        async:false,//是否非同步
        cache:false,//是否使用快取
        type:'POST',//請求方式:post
        dataType:'json',//資料傳輸格式:json
        url:'<%=path%>/ztree/jsonZtree',
        //請求的action路徑
        error:function(){
            //請求失敗處理函式
            alert('親,請求失敗!');
        },
        success:function(data){
//          console.log(data);
            //請求成功後處理函式
            treeNodes = data;//把後臺封裝好的簡單Json格式賦給treeNodes
        }
    });
$.fn.zTree.init($("#user_tree"), setting, treeNodes);
}   

</body>
</html>

1.將json物件轉化為json字串,再判斷該字串是否為"[]"

var data =[];
var b = (JSON.stringify(data) == "[]");
alert(b);//true


2.for in 迴圈判斷
var obj = [];
var b = function() {
for(var key in obj) {
return false;
}
return true;
}
alert(b());//true


3.jquery的isEmptyObject方法
此方法是jquery將2方法(for in)進行封裝,使用時需要依賴jquery
var data = [];
var b = $.isEmptyObject(data);

alert(b);//true


4.Object.getOwnPropertyNames()方法
此方法是使用Object物件的getOwnPropertyNames方法,獲取到物件中的屬性名,存到一個數組中,返回陣列物件,我們可以通過判斷陣列的length來判斷此物件是否為空
注意:此方法不相容ie8,其餘瀏覽器沒有測試
var data = [];
var arr = Object.getOwnPropertyNames(data);
alert(arr.length == 0);//true


5.使用ES6的Object.keys()方法
與4方法類似,是ES6的新方法, 返回值也是物件中屬性名組成的陣列
var data = [];

var arr = Object.keys(data);
alert(arr.length == 0);//true