JavaScript面試數(shù)組index和對象key問題詳解
面試題一:
var arr = [1, 2, 3, 4]
問:arr[1] = ?; arr['1'] = ?
答:arr[1] = 2; arr['1'] = 2
這里可以再分為兩個問題:
1、數(shù)組賦值
var arr = [1, 2, 3, 4] arr[1] = 10; // 數(shù)字場景 arr['10'] = 1; // 字符串場景 arr['a'] = 1; // 字符串場景 arr[true] = 2; // 布爾值 arr[undefined] = 3; // undefined arr[null] = 4; // null arr[Symbol] = 5; // Symbol arr[new Object()] = 6; // 對象 arr[function(){}] = 7 // 函數(shù)
打印結(jié)果:
結(jié)果說明,修改數(shù)組的值的過程中,下標(biāo)index
如果是數(shù)字,那么,就是正常的數(shù)組賦值。
如果是非數(shù)字,那么會將其轉(zhuǎn)換為字符串,其實數(shù)組也是對象,那么,非數(shù)字就相當(dāng)于給對象arr
的key
鍵定義的value
值。
2、數(shù)組取值
通過上述方式先為數(shù)組賦值,然后再通過以下方式取值:
console.log(arr[1]); // 10 console.log(arr['10']); // 1 console.log(arr[true]); // 2 console.log(arr[undefined]); //3 console.log(arr[null]); // 4 console.log(arr[Symbol]); // 5 console.log(arr[new Object()]); // 6 console.log(arr[function(){}]); // 7
由打印的結(jié)果可以看出,數(shù)組在取值時索引是數(shù)字,按照數(shù)組取值方式獲取。
如果索引位置是非數(shù)字,會將其轉(zhuǎn)換成字符串,通過對象的方式取值。
所以題目中的arr['1']
會轉(zhuǎn)換成arr[1]
,最終獲取到的值為2
。
面試題二:
var obj = { 0: 1, 1: 2, 2: 3 }
問:obj[1] = ?; obj['1'] = ?
答:obj[1] = 2; obj['1'] = 2
這里也可以再分為兩個問題:
1、對象賦值
var obj = { 0: 1, 1: 2, 2: 3 } obj[1] = 10; // 數(shù)字場景 obj['10'] = 1; // 字符串場景 obj['a'] = 1; // 字符串場景 obj[true] = 2; // 布爾值 obj[undefined] = 3; // undefined obj[null] = 4; // null obj[Symbol] = 5; // Symbol obj[new Object()] = 6; // 對象 obj[function () {}] = 7 // 函數(shù)
打印結(jié)果:
可以看出,對象賦值的時候,如果key值不是字符串,會將其轉(zhuǎn)換成字符串。
2、對象取值
通過上述方式先為對象賦值,然后再通過以下方式取值:
console.log(arr[1]); // 10 console.log(arr['10']); // 1 console.log(arr[true]); // 2 console.log(arr[undefined]); //3 console.log(arr[null]); // 4 console.log(arr[Symbol]); // 5 console.log(arr[new Object()]); // 6 console.log(arr[function(){}]); // 7
由打印的結(jié)果可以看出,對象在取值時,如果當(dāng)前key值不是字符串,會將其轉(zhuǎn)換成字符串,再取值。
所以題目中的arr[1]
會轉(zhuǎn)換成arr['1']
,最終獲取到的值為2
。
總結(jié)
對象的下標(biāo)如果不是字符串,會將其先轉(zhuǎn)換成字符串,再去求值。數(shù)組的下標(biāo)如果不是數(shù)字,先將其嘗試轉(zhuǎn)成數(shù)字去取值;如果轉(zhuǎn)不成數(shù)字,則會利用數(shù)組也是對象的特點,將其轉(zhuǎn)換成字符串,再去取值。
以上就是JavaScript面試數(shù)組index和對象key問題詳解的詳細(xì)內(nèi)容,更多關(guān)于JavaScript數(shù)組index對象key的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JS前端并發(fā)多個相同的請求控制為只發(fā)一個請求方式
這篇文章主要為大家介紹了JS前端并發(fā)多個相同的請求控制為只發(fā)一個請求方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07一款功能強大的markdown編輯器tui.editor使用示例詳解
這篇文章主要為大家介紹了一款功能強大的markdown編輯器tui.editor使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02

web?worker在項目中的使用學(xué)習(xí)為項目增加亮點

Servlet3.0與純javascript通過Ajax交互的實例詳解

字節(jié)飛書面試promise.all實現(xiàn)示例

基于遷移學(xué)習(xí)的JS目標(biāo)檢測器構(gòu)建過程詳解