• js动态添加未知新属性


    1 前言

    由于项目需要,需要实现获取服务器不同网卡扫局域网中的某种类型设备,然而不同服务器的网卡个数是不相同的,从而需要动态增加未知属性来统计不同网卡扫到的设备个数。

    2 代码

    function nicClassify(json){
    			
    			var ret = {};
    			var jsonArr = json.split(",");
    			var setArr = uniqueArr(jsonArr);
    			var map={};
    			
    			if(json == ""){
    				return ret;
    			}
    			
    			
    			//init
    			ret.wireless = 0;
    			var k=0;
    			for(var j = 0; j < setArr.length;j++){
    				var data = setArr[j].toLowerCase();
    				if(!(data.indexOf("wireless") > -1 || data.indexOf("wifi") > -1 || data.indexOf("wlan") > -1 || data.indexOf("wi-fi") > -1)){
    					eval("ret.wire"+k+"=0");
    					eval("map['"+r(data)+"']='wire"+k+"'");
    					k++;
    				}
    			}
    			
    			for(var i = 0; i < jsonArr.length; i++){
    				var data = jsonArr[i].toLowerCase();
    				if(data.indexOf("wireless") > -1 || data.indexOf("wifi") > -1 || data.indexOf("wlan") > -1 || data.indexOf("wi-fi") > -1){
    					ret.wireless ++;
    				}else {
    					for(var kk = 0; kk < k; kk++){
    						if(eval("map['"+r(data)+"']='wire"+kk+"'")){
    							eval("ret.wire"+kk+"++");
    						}
    					}
    					
    				}
    			}
    			return ret;
    		}
    		function r(s){
    			return s.replaceAll(" ","_");
    		}
    
    		
    		function uniqueArr(array){
    			var n = [];
    			for(var i = 0; i < array.length; i++){ 
    				if (n.indexOf(array[i]) == -1) 
    					n.push(array[i]); 
    			} 
    			return n; 
    		}
    
            //Sample: jsonArrNICs ="wifi,wi-fi,a,a,b,b,b,wlan";
    	var nicRetMap = nicClassify(jsonArrNICs);
    

    3 说明

    一般来说,map.attr1 = val1 等价于map["attr1"] = val1,但是当attr1是带有 ’ ‘,’-‘ 等符号,不能直接使用’.‘操作符来访问。

      

  • 相关阅读:
    网络配置bridge
    ng-zorro等组件默认样式的修改
    正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?
    ||与&&的返回值
    JS判断对象是否存在的10种方法总结
    undefined与null的区别
    前端页面布局中水平、垂直居中问题
    MAMP VirtualHost 无效 配置踩坑
    问题锦选
    Windows相关要点记录
  • 原文地址:https://www.cnblogs.com/fanbi/p/8423152.html
Copyright © 2020-2023  润新知