不同數(shù)據(jù)類型的操作方法

數(shù)據(jù)類型

JavaScript一共有8種數(shù)據(jù)類型,其中有7種基本數(shù)據(jù)類型:Undefined会前、Null好乐、Boolean、Number瓦宜、String蔚万、Symbol(es6新增,表示獨(dú)一無二的值)和BigInt(es10新增)临庇。

1種引用數(shù)據(jù)類型——Object(Object本質(zhì)上是由一組無序的名值對(duì)組成的)反璃。里面包含 function、Array苔巨、Date等版扩。JavaScript不支持任何創(chuàng)建自定義類型的機(jī)制,而所有值最終都將是上述 8 種數(shù)據(jù)類型之一侄泽。

原始數(shù)據(jù)類型:直接存儲(chǔ)在棧(stack)中礁芦,占據(jù)空間小、大小固定悼尾,屬于被頻繁使用數(shù)據(jù)柿扣,所以放入棧中存儲(chǔ)。

引用數(shù)據(jù)類型:同時(shí)存儲(chǔ)在棧(stack)和堆(heap)中闺魏,占據(jù)空間大未状、大小不固定。引用數(shù)據(jù)類型在棧中存儲(chǔ)了指針析桥,該指針指向堆中該實(shí)體的起始地址司草。當(dāng)解釋器尋找引用值時(shí),會(huì)首先檢索其在棧中的地址泡仗,取得地址后從堆中獲得實(shí)體埋虹。

判斷類型

  • typeof 于原始類型來說,除了 null (object)都可以顯示正確的類型娩怎。
  • instanceof 判斷對(duì)象的類型 (原理: 內(nèi)部機(jī)制是通過判斷對(duì)象的原型鏈中是不是能找到類型的 prototype)搔课。
  • constructor
console.log((2).constructor === Number); // true
console.log((true).constructor === Boolean); // true
console.log(('str').constructor === String); // true
console.log(([]).constructor === Array); // true
console.log((function() {}).constructor === Function); // true
console.log(({}).constructor === Object); // true
注意!如果我創(chuàng)建一個(gè)對(duì)象截亦,更改它的原型爬泥,constructor隨之變化
function Fn(){};

Fn.prototype=new Array();

var f=new Fn();

console.log(f.constructor===Fn);    // false
console.log(f.constructor===Array); // true 

字符串

es6: 字符串對(duì)象就新增了 .includes() 和 .repeat() 方法柬讨。

.includes()

替代以往判斷內(nèi)容 > -1 的方式

const string = 'food';
const substring = 'foo';

console.log(string.includes(substring)); // true
console.log(string.indexOf(substring) > -1);  

substring()

用于提取字符串中介于兩個(gè)指定下標(biāo)之間的字符

stringObject.substring(start,stop)

// start 必填, stop: 選填


var str="Hello world!"
document.write(str.substring(3))   // lo world!

.repeat()

實(shí)現(xiàn)重復(fù)字符

'meow'.repeat(3); // 'meowmeowmeow'

match()

方法可在字符串內(nèi)檢索指定的值袍啡,或找到一個(gè)或多個(gè)正則表達(dá)式的匹配踩官。
該方法類似 indexOf() 和 lastIndexOf(),但是它返回指定的值葬馋,而不是字符串的位置卖鲤。

語法
stringObject.match(searchvalue)
stringObject.match(regexp)

match() 方法將檢索字符串 stringObject,以找到一個(gè)或多個(gè)與 regexp 匹配的文本畴嘶。這個(gè)方法的行為在很大程度上有賴于 regexp 是否具有標(biāo)志 g。

如果 regexp 沒有標(biāo)志 g集晚,那么 match() 方法就只能在 stringObject 中執(zhí)行一次匹配窗悯。如果沒有找到任何匹配的文本, match() 將返回 null偷拔。否則蒋院,它將返回一個(gè)數(shù)組,其中存放了與它找到的匹配文本有關(guān)的信息莲绰。該數(shù)組的第 0 個(gè)元素存放的是匹配文本欺旧,而其余的元素存放的是與正則表達(dá)式的子表達(dá)式匹配的文本。除了這些常規(guī)的數(shù)組元素之外蛤签,返回的數(shù)組還含有兩個(gè)對(duì)象屬性辞友。index 屬性聲明的是匹配文本的起始字符在 stringObject 中的位置,input 屬性聲明的是對(duì) stringObject 的引用震肮。

如果 regexp 具有標(biāo)志 g称龙,則 match() 方法將執(zhí)行全局檢索,找到 stringObject 中的所有匹配子字符串戳晌。若沒有找到任何匹配的子串鲫尊,則返回 null。如果找到了一個(gè)或多個(gè)匹配子串沦偎,則返回一個(gè)數(shù)組疫向。不過全局匹配返回的數(shù)組的內(nèi)容與前者大不相同,它的數(shù)組元素中存放的是 stringObject 中所有的匹配子串豪嚎,而且也沒有 index 屬性或 input 屬性搔驼。

示例:
var str="Hello world!"
document.write(str.match("world") + "<br />")
document.write(str.match("World1") + "<br />")

// world
// null 

var str="1 plus 2 equal 3"
document.write(str.match(/\d+/g))

// 1,2,3

substr()

方法可在字符串中抽取從 start 下標(biāo)開始的指定數(shù)目的字符。
stringObject.substr(start,length)

length 可選

var str="Hello world!"
document.write(str.substr(3) 

// lo world!

document.write(str.substr(3,7)) 7:子串中的字符數(shù)疙渣。
//lo worl

eval()

可計(jì)算某個(gè)字符串,并執(zhí)行其中的的 JavaScript 代碼匙奴。

eval("x=10;y=20;document.write(x*y)")

document.write(eval("2+2"))

var x=10
document.write(eval(x+17))

200
4
27

trim()

去除字符串的頭尾空格
不會(huì)改變?cè)甲址?/p>

toString()

方法可把一個(gè)邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果妄荔。


object

Object.keys()

定義:
ES5 引入了Object.keys方法泼菌,成員是參數(shù)對(duì)象自身的(不含繼承的)所有可遍歷( enumerable )屬性的鍵名谍肤。

  • 傳入對(duì)象,返回屬性名
var data={a:1,b:2,c:9,d:4,e:5};
    console.log(Object.keys(data));//["a", "b", "c", "d", "e"]
    Object.keys(data).map((key,item)=>{
        console.log(key,data[key]);//key=>屬性名    data[key]=>屬性值
});
  • 傳入字符串哗伯,返回索引
var str = 'ab1234';
console.log(Object.keys(obj));  //[0,1,2,3,4,5]
  • 傳入數(shù)組 返回索引
var arr = ["a", "b", "c"];
    console.log(Object.keys(arr)); // console: ["0", "1", "2"]****
  • 構(gòu)造函數(shù) 返回空數(shù)組或者屬性名
function Pasta(name, age, gender) {
      this.name = name;
      this.age = age;
      this.gender = gender;
      this.toString = function () {
            return (this.name + ", " + this.age + ", " + this.gender);
    }
}

console.log(Object.keys(Pasta)); //console: []

var spaghetti = new Pasta("Tom", 20, "male");
console.log(Object.keys(spaghetti)); //console: ["name", "age", "gender", "toString"]

Object.values()

Object.values方法返回一個(gè)數(shù)組荒揣,成員是參數(shù)對(duì)象自身的(不含繼承的)所有可遍歷( enumerable )屬性的鍵值。

Object.entries()

Object.entries方法返回一個(gè)數(shù)組焊刹,成員是參數(shù)對(duì)象自身的(不含繼承的)所有可遍歷( enumerable )屬性的鍵值對(duì)數(shù)組系任。


json

JSON.stringify()

JSON 的常規(guī)用途是同 web 服務(wù)器進(jìn)行數(shù)據(jù)交換。

在向 web 服務(wù)器發(fā)送數(shù)據(jù)時(shí)虐块,數(shù)據(jù)必須是字符串俩滥。

通過 JSON.stringify() 把 JavaScript 對(duì)象轉(zhuǎn)換為字符串

JSON.parse()

JSON.parse() 方法用于將一個(gè) JSON 字符串轉(zhuǎn)換為對(duì)象


Number

toFixed()

方法可把 Number 四舍五入為指定小數(shù)位數(shù)的數(shù)字

var num = new Number(13.37);
num.toFixed(1) 一位小數(shù) 13.4

Number.isInteger()

方法用來判斷給定的參數(shù)是否為整數(shù)。

floor()

方法返回小于等于x的最大整數(shù)


Date

toUTCString() 方法

可根據(jù)世界時(shí) (UTC) 把 Date 對(duì)象轉(zhuǎn)換為字符串贺奠,并返回結(jié)果

var d = new Date()
document.write (d.toUTCString())

// Tue, 19 May 2020 09:06:44 GMT
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末霜旧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子儡率,更是在濱河造成了極大的恐慌挂据,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儿普,死亡現(xiàn)場離奇詭異崎逃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)眉孩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門个绍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人勺像,你說我怎么就攤上這事障贸。” “怎么了吟宦?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵篮洁,是天一觀的道長。 經(jīng)常有香客問我殃姓,道長袁波,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任蜗侈,我火速辦了婚禮篷牌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘踏幻。我一直安慰自己枷颊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著夭苗,像睡著了一般信卡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上题造,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天傍菇,我揣著相機(jī)與錄音,去河邊找鬼界赔。 笑死丢习,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的淮悼。 我是一名探鬼主播咐低,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼敛惊!你這毒婦竟也來了渊鞋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤瞧挤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后儡湾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體特恬,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年徐钠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了癌刽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尝丐,死狀恐怖显拜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情爹袁,我是刑警寧澤远荠,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站失息,受9級(jí)特大地震影響譬淳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盹兢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一邻梆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绎秒,春花似錦浦妄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蠢涝。三九已至,卻和暖如春宜咒,著一層夾襖步出監(jiān)牢的瞬間惠赫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工故黑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留儿咱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓场晶,卻偏偏與公主長得像混埠,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诗轻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355