您的位置:首页 > Web前端 > JavaScript

js 判断对象是否为空数组对象

2018-01-15 09:51 309 查看
<%@ 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: