1. 程式人生 > >js對資料常用處理方式

js對資料常用處理方式

說明:本文並沒有對js處理資料進行深究,本人也不是專業前端人員,只是碰到js處理資料時,對當時的處理資料方式進行記錄和總結,後續工作中碰到值得記錄的會持續更新。

1、字串轉換成物件
程式碼:

var obj = JSON.parse(data);
console.log(JSON.stringify(data.data));

說明:
①php中json_encode()轉換返回給前端頁面時,用“.”讀取不到,是因為返回的是字串格式,就是最外層帶了引號的json資料格式,可以用var obj = JSON.parse(data);轉換成物件,也可以用tp框架中的$this->ajaxReturn();
②另外在vue中,有時候列印物件或者陣列時,可能會出現看不懂其資料結構,可以用console.log(JSON.stringify(data.data));

打印出來,再複製出來,格式化結構。

2、js 判斷一個 object 物件是否為空

if (JSON.stringify(data) === '{}') {
    return false // 如果為空,返回false,陣列可以用同樣的判斷方式
}
if (Object.keys(object).length === 0) {
    return false // 如果為空,返回false,Object.keys(object)會返回一個空陣列[]
}

3、陣列中新增元素
程式碼:arr.push();
說明:
可以用arr.push(),在新增元素之前先確認變數arr是一個數組。可以自己定義var arr = [],並可以在陣列中新增物件,例如arr.push({"aa":"bb"})

4、讀取物件或這陣列中的元素

var test = [{"a":"a"},{"b","b"}];
console.log(test[1].b);
console.log(test[1].['b']);//不能用test.1.b

當鍵名是數字時,不能用“.”點拼接,只能用[]

5、當兩個陣列要根據各自某一個欄位進行排序
舉個例子,表格的表頭和表中的值,分為了兩個陣列(如下),表頭和表中值要一一對應。另外,在Element的表格元件中,不用排序,其元件已做了排序的工作。

表頭1 表頭2 表頭3
1 2 3

陣列示例:陣列1和陣列2要根據key欄位一一對應,可以根據這個欄位先對兩個陣列進行排序,然後一一匹配,如氣泡排序等。

[
    {
        "tabelHeader":"表頭1",
        "key":"1"
    },
    {
        "tabelHeader":"表頭2",
        "key":"2"
    },
    {
        "tabelHeader":"表頭3",
        "key":"3"
    }
]
[
    {
        "value":"2",
        "key":"2"
    },
    {
        "value":"1",
        "key":"1"
    },
    {
        "value":"3",
        "key":"3"
    }
]
//根據陣列中某個鍵的值氣泡排序,還有其他更優排序方式,這裡不一一示例,可以搜尋相關演算法排序方式。
function bubbleSort(arr,sortKey) {
    //console.time('2.快速排序耗時');
    var len = arr.length;
    for (var i = 0; i < len; i++) {
        for (var j = 0; j < len - 1 - i; j++) {
            if (arr[j][sortKey] > arr[j+1][sortKey] ) { //相鄰元素兩兩對比
                var temp = arr[j+1]; //元素交換
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    //console.timeEnd('222222.快速排序耗時');
    return arr;
}

6、轉義與反轉義相容寫法
程式碼:

//反轉義
function HTMLDecode(text) {
    var temp = document.createElement("div");
    temp.innerHTML = text;
    var output = temp.innerText || temp.textContent;
    temp = null;    return output;
}
//轉義
function HTMLEncode(html) {    
    var temp = document.createElement ("div");  
    (temp.textContent != null) ? (temp.textContent = html) : (temp.innerText = html);  
    var output = temp.innerHTML;  
    temp = null;  
    return output;
}

說明:前端相關朋友說這麼寫是相容性寫法,我這裡就不深究了,親測可用。

7、剔除陣列中的某些元素
目前只找到迴圈剔除,把需要的元素用push新增到新的陣列中。使用splice在迴圈中有問題,個人猜測是鍵名原因,未做深究,但我個人覺得肯定有更好方式,因為參照其他語言,都有更為簡單的方式,知道的朋友請告知下,謝謝。
–更新–今天看到前端人員剔除陣列中一些元素時,用到了filter函式,挺好用的。

8、將陣列中字串轉換成整型

var arr = ["1","2","3"];
arr = arr.map(function (data) {
    return +data;
});//此時arr變成[1,2,3]

map是個好方法,我個人對map理解不深,對其使用有些彆扭。

9、判斷物件或陣列中元素是否存在

typeof data.archiveRecordPage !== undefined

一搬如果typeof後邊是表示式,就要用括號括起來,否則不用括起來。另外一般要判斷該層級之前的層級也要存在
—-更新: hasOwnProperty也可以物件某物件是否存在

10、將時間戳轉換為時間格式
在網上找的一個示例,如果是php寫的介面,一般是需要在返回的時間戳欄位上乘以1000的,java寫的介面一般不需要,這個與精確度有關。一個是精確到秒,一個是精確到毫秒。當然,在框架VUE中另有其他寫法,這裡暫時不做深究。

formatDate(timestamp) {
    var date = new Date(timestamp);//時間戳為10位需*1000,時間戳為13位的話不需乘1000
    var Y = date.getFullYear() + '-';
    var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
    var D = (date.getDate() < 10 ? '0'+(date.getDate()) : date.getDate()) + ' ';
    var h = (date.getHours() < 10 ? '0'+(date.getHours()) : date.getHours()) + ':';
    var m = (date.getMinutes() < 10 ? '0'+(date.getMinutes()) : date.getMinutes()) + ':';
    var s = (date.getSeconds() < 10 ? '0'+(date.getSeconds()) : date.getSeconds());
    return Y+M+D+h+m+s;
},

11、js判斷陣列中物件裡的某一個值是否存在

function isInArray(arr,value){
    for(var i = 0; i < arr.length; i++){
        if(value === arr[i]['id']){
            return true;
        }
    }
    return false;
}
var arr = [{id: "ccjl1"},{id: "ccjl2"},{id: "ccjl3"}];
var test = isInArray(arr,'ccjl1');
console.log(test);

相關推薦

js資料常用處理方式

說明:本文並沒有對js處理資料進行深究,本人也不是專業前端人員,只是碰到js處理資料時,對當時的處理資料方式進行記錄和總結,後續工作中碰到值得記錄的會持續更新。 1、字串轉換成物件 程式碼: var obj = JSON.parse(data); co

js 常用擴展

cond lse gets ring 長度 amp replace tor var //js string對象擴展 (function() { // 除去兩邊空白 String.prototype.trim = function() {

機器學習中不平衡資料處理方式

https://blog.csdn.net/pipisorry/article/details/78091626 不平衡資料的場景出現在網際網路應用的方方面面,如搜尋引擎的點選預測(點選的網頁往往佔據很小的比例),電子商務領域的商品推薦(推薦的商品被購買的比例很低),信用卡欺詐檢測,網路攻擊識別

FortiGate防火牆資料處理流程

1.流程圖      2.防火牆對資料包處理過程的各步驟如下:   1)Interface(網絡卡介面)   網絡卡介面驅動負責接數收據包,並轉交給下一過程。   2)DoS Sensor(DoS防禦,預設關閉)   負責過濾SYN flood、UDP flood、ICMP flood等DoS攻擊

Js 小數的處理(科學計數法 , 顯示精度)

一。 對數字進行格式化輸出,是非常有意義的一件事情,例如許多時候,我們希望一個數字能夠輸出為指定格式的字串,拿25.9878來說,我們可能會希望它能保留兩位小數來說出,即結果為25.99,或者對於0.345678,希望能夠按百分號輸出,並保留小數點後兩位,即結果為34.57%,又例如我們希望將數字5

資料處理函式

zip函式把東西打包成一個以逗號為分隔的元組 weather_dict = dict(zip(regions, zip(weather_stations, region_names, cities))) weather_dict {'CAPITL': ('kalb', 'Capital',

JS 實現MD5加密,以及發現的JS字元的處理、替換等

        在實際開發工作中,用到介面開發,報文采用的是MD5加密方式,自己想做一個html的靜態頁面來實現報文的封裝和加密,在這個過程中就發現了js對雙引號“"”的處理不像看上去那麼簡單了。還有js替換字串的方法。 js實現MD5加密: <body>

JS下載檔案常用方式

下載附件(image,doc,docx, excel,zip,pdf),應該是實際工作中經常遇到一個問題;這裡使用過幾種方式分享出來僅供參考; 初次寫可能存在問題,有問題望指出 ​ 主要了解的幾個知識點: http 響應頭設定 Content-Dispo

Struts2的後臺與前臺資料互動處理方式的簡單總結

 4種拿到值得的辦法: 1)  <s:property value="username"/> 2) {username}    3) <s:property value="#request.username"/>  4) <s:property value="%{username

4.利用Model Builder迭代器資料處理

1.首先,在ArcMap的【目錄】視窗中的【我的工具箱】下新建一個工具箱(不重新命名),如下圖: 2.如下圖所示,再在【工具箱】下新建一個【模型】,此時會自動開啟一個【模型構建器】視窗; 3.接下來需要新增三部分工具:【緩衝區】工具、【迭代器】、

crypto-js資料進行base64編碼

<html><head><meta charset="UTF-8"><title></title><script src="js/core-min.js" type="text/javascript" charset="utf-8">&l

Java中大量資料批量處理方式

在訂單中心處理訂單,總會遇到大批量訂單處理的業務,下面就將如何大批量處理資料來提高效率做一個總結; 程式碼設計:在dao層寫批量新增的方法。以及實現dao的實現類,在service呼叫這個dao就可以了,不過最終走的還是單個只不過是集合的遍歷。 IOrde

JSON傳遞bool型別資料處理方式

ajax中使用json傳遞資料時,其它資料型別都不是問題,但是如果伺服器端生成的JSON中有bool型別的資料時,到客戶端解析時出現了小小的問題,總結如下: 伺服器返回的JSON為: {"TypeID":[1037],"Title":"河北軟體職業技術學院","Intr

JS陣列的處理(包含ES6)

JS有很多處理陣列的方法,這些方法都是Array內建物件的方法。該文章是對這些方法的用途的總結,方便翻閱,並不提供具體使用示例。眾所周知,陣列是引用型別,所以我把這些方法分為兩類,一類是直接對原陣列操作,會改變原陣列的方法,另一類是返回一個副本,對這個副本的操作不會改變原陣列

JS象創建常用方式及原理分析

原型模式 這樣的 前言 values 一句話 開始 creat 動態原型 1-1 ====此文章是稍早前寫的,[email protected]/* */==== 前言 俗話說“在js語言中,一切都對象”,而且創建對象的方式也有很多種,所以今天我們做一下梳理 最

各瀏覽器常用或者錯誤的 Content-Type 類型處理方式不一致

mimetype rac apache。 顯示文件 vid ssi 字符 inf 識別 標準參考 content-type 用於定義用戶的瀏覽器或相關設備如何顯示將要加載的數據,或者如何處理將要加載的數據,此屬性的值可以查看 MIME 類型。 MIME (Multipu

用d3.js訊號處理的結果資料作圖,得到可縮放互動的動態SVG圖

d3.js 有何用 D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG, and CSS. D3’s

【JavaScript】常用資料型別的處理方式

寫這篇文章的目的,是在學習過程中反覆查詢如何對這三種資料型別進行轉換的方法,所以乾脆總結在一起。   一、字串 0.includes:string.includes(),查詢當前string中是否包含某個字串,有返回true,沒有返回false 1.indexOf:string.indexO

JSONP 跨域Ajax請求,利用js獲取到的資料進行處理.

先看看獲取到的資料: 前端內容ajax 使用jsonp跨域請求方式,理解如下: JSONP本質: 利用script標籤src跨域訪問,獲得一個回撥函式,再利用回撥函式引數內容獲取返回的資料args img src   亦可以, Form src會被本地同源策略阻

JS資料型別判斷方式及優缺點、String常用方法

資料型別判斷方式及優缺點 JS中一共有七種資料型別: 一種引用型別——Object, 六種基本資料型別——Number、String、Boolean、Null、Undifined、Symbol(ES6新增) typeof(var):返回的是一個字串,但是對於複