簡體   English   中英

遞歸查找 Javascript 中的字符串長度(無內置方法)

[英]Find length of string in Javascript (no built-in methods) recursively

這是一個我無法解決的棘手問題。

編寫一個接受字符串並返回其長度的遞歸 function。 不要使用 Javascript 中的 .length 屬性、循環或任何內置方法來查找解決方案。

我非常接近這個解決方案,但我無法找到.slice()方法的替代方法。 這個 function 當前有效,但不適合問題的參數,因為 if 使用該方法和.length屬性:

let lengthGetter = (str, def) => {
  let len = def || 0;
  if (str[0] === undefined) return len;
  return lengthGetter(str.slice(0, str.length - 1), len + 1);
};

console.log(lengthGetter("hello")) // 5

即使涉及丟棄我當前的 function,任何人都可以找到解決此問題的方法嗎? 請記住,您不能使用任何內置方法或循環,這使得它非常具有挑戰性。

這是您可以在不使用任何內置方法的情況下獲取給定字符串的長度的最簡單的遞歸單行。

const getLength = (str = "", length = 0) => str[length] ? getLength(str, length + 1) : length;

樣本:

 const getLength = (str = "", length = 0) => str[length]? getLength(str, length + 1): length; console.log(getLength("hello")) console.log(getLength("helloworld"))

接近你寫的:

let lengthGetter = (str, pos = 0) => {
  if (str[pos] === undefined) return 0;
  return 1 + lengthGetter(str, pos + 1);
};

這常常讓人感到意外:

'🌯🌯🌯'.length
//=> 6

如果您需要計算人類會看到什么,那么您可以解構字符串,因為大多數(但不是全部)字符將被保留為:

[...'🌯🌯🌯'].length
//=> 3

所以我們可以有:

const Nil = Symbol();
const len = ([x = Nil, ...xs]) => x === Nil ? 0 : 1 + len(xs);

len('foo');
//=> 3
len('🌯🌯🌯');
//=> 3

暫無
暫無

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

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