欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript面試數(shù)組index和對象key問題詳解

 更新時間:2022年12月22日 14:25:40   作者:qb  
這篇文章主要為大家介紹了JavaScript面試數(shù)組index和對象key問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

面試題一:

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)于給對象arrkey鍵定義的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)文章

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

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

    這篇文章主要為大家介紹了web?worker使用學(xué)習(xí)來為你的項目增加亮點,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Servlet3.0與純javascript通過Ajax交互的實例詳解

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

    Servlet與純javascript通過Ajax交互,對于很多人來說應(yīng)該很簡單。不過還是寫寫,方便Ajax學(xué)習(xí)的后來者
    2018-03-03
  • 字節(jié)飛書面試promise.all實現(xiàn)示例

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

    這篇文章主要為大家介紹了字節(jié)飛書面試promise.all實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 基于遷移學(xué)習(xí)的JS目標(biāo)檢測器構(gòu)建過程詳解

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

    這篇文章主要為大家介紹了基于遷移學(xué)習(xí)的JS目標(biāo)檢測器構(gòu)建過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 最新評論