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

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

要求解釋代碼的某些部分

要求解釋代碼的某些部分

慕碼人8056858 2023-01-06 16:20:47
我得到了這個(gè)測(cè)試來(lái)解決它,我解決了它,測(cè)試要求返回?cái)?shù)字的總和,這很容易返回它,但問(wèn)題是返回它(如果數(shù)字是負(fù)數(shù),第一個(gè)例如,數(shù)字應(yīng)算作負(fù)數(shù))。let output = sumDigits(1148);   console.log(output); // --> 14     let output = sumDigits(-316);   console.log(output); // --> 4就像我說(shuō)的那樣解決const sumDigits = num => {  let ar = num.toString().split('')  //Stringify the num and convert it to an array  let minSum = 0 // initialize the minSum counter and set to the value of 0  let plsSum = 0 // initialize the plsSum counter and set to the value of 0  //checking if the array start with '-', and if it's i'm going to remove it.  if (ar[0] === '-') {    ar.splice(0, 1)    ar.reduce((a, b) => minSum = Math.abs(a - b)) // subtracting the arrray of numbers and convet it to number after removing the first char.  }  // iterate over the array.  for (let i = 0; i < ar.length; i++) {    // adding the sum of array numbers to the initial var and convert it to a number    plsSum += Number(ar[i])  }  //returning the minSum and plsSum  if (minSum) {    return minSum  } else {    return plsSum  }}let output = sumDigits(1148)console.log(output) // --> 14let output2 = sumDigits(-316)console.log(output2) // --> 4但是當(dāng)我在搜索的時(shí)候,我發(fā)現(xiàn)這段代碼和reduce在一行中,有些代碼我看不懂,這就是我問(wèn)你們的原因。這是代碼const sumDigits = num =>String(num).split('').reduce((a,v,idx,arr)=> v === '-' ? (v = 0, arr[idx+1] *= -1, a + +v) :a+ +v,0)所以讓我們分解一下。String(num).split('') 在這部分中,他們將其串起來(lái)并將其轉(zhuǎn)換為數(shù)組。?reduce((a,v,idx,arr) 在這部分中,他們用 4 個(gè)參數(shù)初始化 reduce。?v === '-' ?在這部分,他們檢查是否v等于'-',但問(wèn)題是 在第一個(gè)輸出 (1148)v中從1 開始,在第二個(gè)輸出 (-316)中從 3 開始,因?yàn)閷⒁?和' -'對(duì)吧?然后他們?cè)O(shè)置(v = 0)。然后它們乘以-1我 的問(wèn)題是為什么? 如果有人不介意解釋其余代碼,我們將不勝感激。 感謝提前。aarr[idx+1] *= -1
查看完整描述

3 回答

?
鳳凰求蠱

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

您可以Math.abs在拆分之前使用數(shù)字并將其轉(zhuǎn)換為字符串,然后使用 reduce 來(lái)計(jì)算總和。在從函數(shù)返回之前檢查輸入是小于還是大于 0 并相應(yīng)地采取措施


function sumDigits(num) {

  // toString will convert to string so an array of string can be created

  const sum = Math.abs(num).toString().split('').reduce((acc, curr) => {

    // converting string to number before adding with previous digit

    // else it will do string concatenation instead of mathematical addition

    acc += +curr;

    return acc

  }, 0);

  return num < 0 ? -1 * sum : sum;

}




let output = sumDigits(1148);

console.log(output); // --> 14  


let outpu2t = sumDigits(-316);

console.log(outpu2t); // --> -10


查看完整回答
反對(duì) 回復(fù) 2023-01-06
?
阿晨1998

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

我將重點(diǎn)關(guān)注 reduce 方法的部分。reduce Array 方法可以接收兩個(gè)參數(shù),第一個(gè)表示將“減少”數(shù)組的回調(diào),這個(gè)回調(diào)可以接收 4 個(gè)參數(shù):

  1. 電池

  2. 當(dāng)前值

  3. 當(dāng)前指數(shù)

  4. 大批

reduce 方法的第二個(gè)參數(shù)指示哪個(gè)值將啟動(dòng)回調(diào)的Acumulator參數(shù)。

一旦解釋說(shuō),在您看到的示例中,他表示累加器將從 0 值開始:

.reduce(<...>, 0)

然后,在 reduce 方法的第一次迭代中,當(dāng)前值的第一個(gè)值將是數(shù)組的 0 索引值。

num如果我們考慮是的情況-316,那么:

第一次迭代:回調(diào)變量將是:


a = 0

v = '-'

idx = 0

arr = ['-', '3', '1', '6']

該過(guò)程將是:


v === '-' //true, then:

v = 0

arr[idx+1] *= -1 //here, he are converting the value next to the sign to a negative value

a + +v //then, he add the v value to the acumulator with the corresponding sign.

第二次迭代:回調(diào)變量


 a = 0

 v = -3

 idx = 1

 arr = ['-', -3, '1', '6']

過(guò)程:


v === '-' //false, then:

a + +v //a = 0, v = -3. 0 + +(-3) = -3 (Number)

我認(rèn)為你可以貶低故事的其余部分。


查看完整回答
反對(duì) 回復(fù) 2023-01-06
?
長(zhǎng)風(fēng)秋雁

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

簡(jiǎn)短回答:arr[idx+1] *= -1直接將數(shù)組中的下一個(gè)成員操作為負(fù)整數(shù)。


您可以在 Javascript Playground 上嘗試以下代碼,以查看每個(gè)循環(huán)步驟的變量值,以便更好地理解:(這是您試圖理解的代碼的擴(kuò)展版本)


function sum(num) {

  s = String(num)

    .split('')

    .reduce(function (a, v, idx, arr) {

      console.log('a=', a, 'v=', v, 'idx=', idx, 'arr=', arr);

      if (v === '-') {

        v = 0;

        arr[idx + 1] *= -1;

        a += +v;

      } else {

        a += +v;

      }

      return a;

    }, 0);

  return s;

}

console.log(sum(1148));

console.log(sum(-316));


查看完整回答
反對(duì) 回復(fù) 2023-01-06
  • 3 回答
  • 0 關(guān)注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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