json資料格式轉換成樹形狀態兩種方法
var jsonData = [ {"provname":"廣東","cityname":"深圳","localname":"羅田","deptname":"保險1","struid":"C0092","manager":"小飛","telephone":"020-110"}, {"provname":"廣東","cityname":"深圳","localname":"福田","deptname":"保險2","struid":"C0092","manager":"小張","telephone":"020-110"}, {"provname":"廣東","cityname":"深圳","localname":"福田","deptname":"保險3","struid":"C0092","manager":"小名","telephone":"020-110"}, {"provname":"廣東","cityname":"東莞","localname":"厚街","deptname":"保險4","struid":"C0092","manager":"小飛","telephone":"020-110"}, {"provname":"廣東","cityname":"廣州","localname":"白雲","deptname":"保險5","struid":"C0092","manager":"小張","telephone":"020-110"}, {"provname":"廣東","cityname":"廣州","localname":"荔灣","deptname":"保險6","struid":"C0092","manager":"小張","telephone":"020-110"}, {"provname":"廣東","cityname":"東莞","localname":"厚街","deptname":"保險7","struid":"C0092","manager":"小名","telephone":"020-110"}, {"provname":"廣東","cityname":"惠州","localname":"厚街","deptname":"保險7","struid":"C0092","manager":"小名","telephone":"020-110"}, {"provname":"廣東","cityname":"東莞","localname":"厚街","deptname":"保險7","struid":"C0092","manager":"小名","telephone":"020-110"}, {"provname":"廣東","cityname":"惠州","localname":"厚街","deptname":"保險7","struid":"C0092","manager":"小名","telephone":"020-110"}, {"provname":"廣東","cityname":"惠州","localname":"厚街","deptname":"保險7","struid":"C0092","manager":"小名","telephone":"020-110"} ] 1.第一種方式 /** * 轉換一維陣列為樹形陣列 * @param {Array} keys 樹形結構的參照key * @param {Array} data 待轉換的原始資料 * @return {Array} 轉換後的陣列 * @api private */ function translate (keys, data) { let [key, ...nextKeys] = keys let hasNextKey = nextKeys && nextKeys.length let map = {} data.forEach(item => { let k = item[key] if (k && !map[k]) { // 獲取源陣列中所有命中的`item`認為這些`item`為子項 let childList = data.filter(item => item[key] === k).map(item => delete item[key] && item) map[k] = { [key]: k, list: hasNextKey ? translate(nextKeys, childList) : childList // 如果還有用來分組的key,繼續執行,否則返回陣列 } } }) return Object.values(map) } let result = translate(['provname', 'cityname', 'localname'], jsonData) console.log(result) 2.第二種方式 var provnameArr = []; var resultArr = []; $(function () { for (var i = 0, len = jsonData.length; i < len; i++) { var currData = jsonData[i]; var provname = currData.provname || ""; //處理省級資料 var proObj = {}; var proIndex = $.inArray(provname, provnameArr); if (proIndex == -1) { provnameArr.push(provname); proObj.provname = provname; proObj.citylist = []; resultArr.push(proObj); } else { proObj = resultArr[proIndex]; } //處理市級資料 var cityname = currData.cityname || ""; var cityObj = getCityObjByCityName(cityname,proObj); if (!cityObj) { cityObj = {}; cityObj.cityname = cityname; cityObj.citylists = []; proObj.citylist.push(cityObj); } //處理區級資料 var localname = currData.localname || ""; var localnameObj = getLocalObjByLocalName(localname,cityObj); if (!localnameObj) { localnameObj = {}; localnameObj.localname = localname; localnameObj.localnames = []; cityObj.citylists.push(localnameObj); } var infoObj = { "longitude": currData.longitude, "latitude": currData.latitude, "deptname": currData.deptname, "struid":currData.struid, "manager": currData.manager, "telephone": currData.telephone, "pickupaddr":currData.pickupaddr, "pickupcall":currData.pickupcall }; localnameObj.localnames.push(infoObj); } }); //根據city名找到city級資料 function getCityObjByCityName(cityName,proObj){ var citylist = proObj.citylist; var cityObj = null; for(var i = 0; i < citylist.length; i++){ var currData = citylist[i]; var currName = currData.cityname; if(cityName == currName){ cityObj = currData; break; } } return cityObj; } //根據區名找到區級資料 function getLocalObjByLocalName(localName,cityObj){ var citylists = cityObj.citylists; var localnameObj = null; for(var i = 0; i < citylists.length; i++){ var currData = citylists[i]; var currName = currData.localname; if(localName == currName){ localnameObj = currData; break; } } return localnameObj; } console.log(resultArr);
相關推薦
json資料格式轉換成樹形狀態兩種方法
var jsonData = [ {"provname":"廣東","cityname":"深圳","localname":"羅田","deptname":"保險1","struid":"C0092","manager":"小飛","telephone":"020-11
將資原始檔的圖片轉換成bitmap 的兩種方法
1.Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.mingchuseal, newOpts); //本地資源轉換成bitmap 2.Drawable
json轉換成time的兩種方式
//yyyy-MM-dd function JsonToDate(jsondate) { var date = new Date(parseInt(jsondate.replace("/Date(", "").replace(")/", ""), 10));
一些json資料格式轉換的例子
question1:後臺接受到前臺的json格式的字串怎麼處理?public static void jsonToJAVA() { System.out.println("json字串轉java程式碼"); String jsonStr = "{\"password\":\
十二.SparkSQL中json資料檔案轉換成parquet檔案
第一步 首先在本地建立一個json檔案,名字叫json_schema_infer.json,檔案中資料的格式如下: {"name":"liguohui","gender":"M","height":160} {"name":"zhangsan","ge
把JSON資料格式轉換為Python的類物件
JOSN字串轉換為自定義類例項物件 有時候我們有這種需求就是把一個JSON字串轉換為一個具體的Python類的例項,比如你接收到這樣一個JSON字串如下: {"Name": "Tom", "Sex": "Male", "
優酷視訊kux格式轉換為MP4的兩種技巧
優酷作為老牌的視訊站點,每天都有很多人在上面看視訊。也有一些朋友會將視訊從優酷上下載下來,放到手機上進行觀看。可是,如果下載的視訊跟手機尺寸不匹配怎麼辦呢?而且優酷視訊只能在優酷上才能夠播放,對於那些手機沒有安裝優酷視訊的朋友來說又該怎麼辦呢?別急,今天就教給大家兩種將kux轉換為MP4的方法。一種是
騰訊視訊qlv格式轉換成mp4的具體操作方法
關於騰訊視訊qlv格式轉換成mp4的具體操作方法,今天來詳細的給你們介紹一下,你們要知道視訊轉換器是不可缺少的,所以是用之前要找到一款心儀的軟體是多麼重要哦!不多說了一起往下看吧。 視訊轉化器http://www.skycn.net/soft/appid/89820.html 音訊格式
Spark中RDD轉換成DataFrame的兩種方式(分別用Java和scala實現)
一:準備資料來源 在專案下新建一個student.txt檔案,裡面的內容為: print? <code class="language-java">1,zhangsan,20 2,lisi,21 3,wanger,1
js 字串轉換成數字的三種方法, 取float型小數點後兩位數的方法
在js讀取文字框或者其它表單資料的時候獲得的值是字串型別的,例如兩個文字框a和b,如果獲得a的value值為11,b的value值為9 ,那麼a.value要小於b.value,因為他們都是字串形式的.在網上找了一下js字串轉數字的文章,這個比較全 方法主要有三種 轉換函式
spark-shell 資料檔案 讀成 表 的兩種方式!!! 相對路徑!!hdfs dfs -ls
park SQL應用 Spark Shell啟動後,就可以用Spark SQL API執行資料分析查詢。 在第一個示例中,我們將從文字檔案中載入使用者資料並從資料集中建立一個DataFrame物件。然後執行DataFrame函式,執行特定的資料選擇查詢。 文字檔案cu
分針網——每日分享:JavaScript進階(四)js字符串轉換成數字的三種方法
加入職業技能圈 q群:272292492 更多文章:www.f-z.cn 在js讀取文本框或者其它表單數據的時候獲得的值是字符串類型的,例如兩個文本框a和b,如果獲得a的value值為11,b的value值為9 ,那麽a.valu
python將字符串轉換成字典的幾種方法
AS ast clas 行處理 模塊 IT python color AR 當我們遇到類似於{‘a’:1, ‘b‘:2, ‘c‘:3}這種字符串時,想要把它轉換成字典進行處理,可以使用以下幾種方法: 1. Python自帶的eval函數(不安全) dictstr = ‘{
[Java類型轉換] Object 轉換成 String 的三種方法
new ron pointer point cep object color 是否 java類型轉換 方法一:Object.toString() obj.toString() 註意:必須保證Object不是null值,否則將拋出NullPointerException異
java程式將漢字轉成拼音的兩種方法-----------------第二種方式
同樣需要下載pom檔案,匯入相應的jar包!!!!!! import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPi
【C++】int轉換為string的兩種方法(to_string、字串流)轉載
int轉換成string的兩種方法 第一種是to_string函式,這是C++11新增的,使用非常方便,簡單查了下:C++11標準增加了全域性函式std::to_string,以及std::stoi/stol/stoll等等函式(這幾個就是string轉int,long,以及long lo
acm資料預處理 —— 離散化的兩種方法
部落格目錄 引言 如果我們要處理一些資料,如果: 我們只關心資料之間相對大小,而不關心每個資料到底有多大 離散化的大體意思就是:給資料重新編號,使新號碼依然具有跟之前相同的大小關係,來使資料更加緊湊。 比如說:給一個無向圖,每個節點都以一個字元表示,那麼我們就可以將
C#_將時間轉換成字串的幾種方法
//獲取當前系統時間 DateTime dt = System.DateTime.Now; //將系統時間轉換成字串 string strTime
java程式將漢字轉成拼音的兩種方法
1.使用pinyin4j將漢字轉成拼音,附件為pinyin4j的jar包 Java程式碼 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.piny
JavaScript字串轉換成數字的三種方法
parseFloat("1234blue"); //returns 1234.0parseFloat("0xA"); //returns NaNparseFloat("22.5"); //returns 22.5parseFloat("22.34.5"); //returns 22.34parseFloat(