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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Javascript - 有什么更好的方法來轉(zhuǎn)換循環(huán)?

Javascript - 有什么更好的方法來轉(zhuǎn)換循環(huán)?

猛跑小豬 2022-12-29 09:50:13
我有創(chuàng)建第二個(gè)數(shù)組的代碼,其中鍵作為數(shù)據(jù) ID。let array = [    {id: 1, name: 'name 1'},    {id: 2, name: 'name 2'},    {id: 35, name: 'name 35'}]let newArray = []array.forEach(function(data){    newArray[data.id] = data})我的代碼工作正常。我得到我想要的。大批:0: {id: 1, name: "name 1"}1: {id: 2, name: "name 2"}2: {id: 35, name: "name 35"}新數(shù)組:1: {id: 1, name: "name 1"}2: {id: 2, name: "name 2"}35: {id: 35, name: "name 35"}但是有沒有比使用循環(huán)更好的方法呢?
查看完整描述

2 回答

?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

您的代碼可能會(huì)執(zhí)行您想要的操作,但概念不正確。newArray是一個(gè)數(shù)組,您將數(shù)組的元素設(shè)置為 indexes 1,2并35生成一個(gè)長(zhǎng)度為 36 的數(shù)組,其中包含許多未定義的元素:


console.log(newArray);

// results in 

[undefined, {

  id: 1,

  name: "name 1"

}, {

  id: 2,

  name: "name 2"

}, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, {

  id: 35,

  name: "name 35"

}]

使用forEachor之類的數(shù)組函數(shù)map只會(huì)遍歷您設(shè)置的三個(gè)元素,但for (let i = 0; i < newArray.length; i++)循環(huán)會(huì)導(dǎo)致意外結(jié)果。


如果你想通過一些 id 索引一個(gè)數(shù)組,那么你將需要一個(gè)映射(Record<number, any>在 Typescript 中),在 Javascript 的情況下它只是一個(gè)對(duì)象。無需更改大部分代碼,您只需使用let newArray = {}.


在不使用循環(huán)的情況下,您需要的是array.reduce函數(shù):


const indexed = array.reduce(

  (result, current) => ({

    ...result,             // spread current result

    [current.id]: current  // add the current element at current.id

  }),

  {});                     // initialize with an empty object

當(dāng)然,您不能像使用數(shù)組那樣遍歷對(duì)象,但可以使用for ... in和for ... of循環(huán):


for (let index in indexed) {

  console.log(indexed[index])

}


for (let element of indexed) {

  console.log(element)

}


查看完整回答
反對(duì) 回復(fù) 2022-12-29
?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

循環(huán)是編程的主要元素之一,它們速度快(for 循環(huán))且易于使用,您沒有理由不想使用它們。特別是如果你想轉(zhuǎn)換數(shù)組,你必須遍歷每個(gè)元素。


但是總有辦法改變你的程序邏輯。您可以將數(shù)據(jù)組織在對(duì)象中,以便稍后通過它們的 ID 訪問它們,就像這樣


// Object data

const data = {

  1: { name: "name 1" },

  2: { name: "name 2" },

  35: { name: "name 35" }

};


// Access entries

console.log(data[35].name);


查看完整回答
反對(duì) 回復(fù) 2022-12-29
  • 2 回答
  • 0 關(guān)注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)