第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Object.keys(obj)中只能兼職

在Object.keys(obj)中只能兼職

慕標琳琳 2021-04-09 17:15:28
我出于某種原因試圖查看某個數(shù)字是否在Object.keys()中,我得到了部分響應,某些數(shù)字未包含在最終對象中。知道為什么in這里只能部分工作嗎?var arrayOfNumbersIHave = [  "542009988",  "7411111111",  "542261111",  "542009988",  "7411111111",  "7411111111",  "7442334675",  "661766029",  "692549335",]var snapObject = {  "542009988": "A",  "542261111": "B",  "661766029": "C",  "6617666029": "D",  "692549335": "E",  "7442334675": "F",  "7411111111": "G",}var objToDisplay = {};for (const i in arrayOfNumbersIHave) {  if (i in Object.keys(snapObject)) {    objToDisplay[arrayOfNumbersIHave[i]] = snapObject[arrayOfNumbersIHave[i]]  }}console.log(objToDisplay)結果:{  "542009988": "A",  "542261111": "B",  "7442334675": "F",  "7411111111": "G",}預期結果:{  "542009988": "A",  "542261111": "B",  "661766029": "C",  "692549335": "E",  "7442334675": "F",  "7411111111": "G",}
查看完整描述

4 回答

?
叮當貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

您可以避免使用for..in迭代數(shù)組?;蛘?,您可以reduce在arrayOfNumbersIHave&上 使用,每個迭代curr參數(shù)將代表的每個元素 arrayOfNumbersIHave。使用它curr來檢查中是否存在相同名稱的密鑰 snapObject。是這樣然后在累加器對象中添加鍵和值


let arrayOfNumbersIHave = [

  "542009988",

  "7411111111",

  "542261111",

  "542009988",

  "7411111111",

  "7411111111",

  "7442334675",

  "661766029",

  "692549335",

]


let snapObject = {

  "542009988": "A",

  "542261111": "B",

  "661766029": "C",

  "6617666029": "D",

  "692549335": "E",

  "7442334675": "F",

  "7411111111": "G",

}


let objToDisplay = arrayOfNumbersIHave.reduce(function(acc, curr) {

  if (snapObject[curr]) {

    acc[curr] = snapObject[curr]

  }

  return acc;

}, {}) // {} is accumulator object 


console.log(objToDisplay)


查看完整回答
反對 回復 2021-04-15
?
呼啦一陣風

TA貢獻1802條經(jīng)驗 獲得超6個贊

以這種方式使用in運算符并不完全正確。 in檢查對象的屬性或數(shù)組的索引。因此,true僅當您要檢查的數(shù)字恰好是數(shù)組中的索引時,它才可能返回。


因此,在這種情況下,您確實要忽略Object.keys,而是使用:


for (const i in arrayOfNumbersIHave) {

  if (arrayOfNumbersIHave[i] in snapObject) {

    objToDisplay[arrayOfNumbersIHave[i]] = snapObject[arrayOfNumbersIHave[i]]

  }

}

就像@adiga在下面指出的那樣,我們可以通過for...of循環(huán)簡化此過程,以得到:


for (const val of arrayOfNumbersIHave) {

  if (val in snapObject) {

    objToDisplay[val] = snapObject[val];

  }

}


查看完整回答
反對 回復 2021-04-15
?
慕妹3242003

TA貢獻1824條經(jīng)驗 獲得超6個贊

您需要檢查數(shù)組的值(如果它在對象中),而不是通過獲取索引來檢查索引的值是否在數(shù)組中。


這條線


if (arrayOfNumbersIHave[i] in snapObject) {

將arrayOfNumbersIHave[i]as的值用作與in運算符和對象進行檢查的鍵。


var arrayOfNumbersIHave = ["542009988", "7411111111", "542261111", "542009988", "7411111111", "7411111111", "7442334675", "661766029", "692549335"],

    snapObject = { 542009988: "A", 542261111: "B", 661766029: "C", 6617666029: "D", 692549335: "E", 7442334675: "F", 7411111111: "G" },

    objToDisplay = {};


for (const i in arrayOfNumbersIHave) {

    if (arrayOfNumbersIHave[i] in snapObject) {

        objToDisplay[arrayOfNumbersIHave[i]] = snapObject[arrayOfNumbersIHave[i]];

    }

}


console.log(objToDisplay);


查看完整回答
反對 回復 2021-04-15
  • 4 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號