簡體   English   中英

我需要幫助理解幾行代碼

[英]I need help understanding a couple lines of code

有人可以幫助我了解這條線上發生了什么:

chars[char] = (chars[char] || 0) + 1;

並在線:

.filter((char) => char[1] > 1).map((char) => char[0]);
/* FULL CODE */
const getRepeatedChars = (str) => {
  const chars = {};
  for (const char of str) {
    chars[char] = (chars[char] || 0) + 1;
  }
  return Object.entries(chars)
    .filter((char) => char[1] > 1)
    .map((char) => char[0]);
};

console.log(getRepeatedChars("aabbkdndiccoekdczufnrz"));
chars[char] = (chars[char] || 0) + 1;

這會將chars[char]的值加1 如果 object 中沒有鍵為char的元素,則chars[char]的值將是未定義的。 undefined || 0 undefined || 00 ; 第一次遇到特定字符時,將此元素加1會將元素初始化為1

Object.entries(chars)
.filter((char) => char[1] > 1).map((char) => char[0]);

Object.entries(chars)返回一個數組,其元素嵌套為[key, value]形式的 arrays , chars ZA8CFDE6331BD59EB2AC96F8911C4B6666 的鍵和值。 鍵是字符串中的字符,值是重復計數。 所以char[1] > 1測試字符是否出現了不止一次,並且filter()返回一個數組,其中為真。 然后.map()返回char[0] ,即字符。 所以這會返回多次出現的字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM