-2

我正在制作一个函数来重新计算最大的常用前缀。这是; 如果输入是:["flower","flow","flight"],输出应该是:"fl"。但有一个例外;当输入是一个空数组时,输出应该是一个空字符串。这是我的功能不起作用的地方。

当输入为: [] 时,输出应为: ""

var longestCommonPrefix = function(strs) {
    let prefix = '';
    let word = '';

    for (let i = 0; i < strs.length; i++){
        for(let j = i + 1; j < strs.length; j++) {
          for (let k = 0; strs[i][k] === strs[j][k]; k++) {
              prefix += strs[i][k];
              //console.log(prefix);
          }
          prefix += ',';
          //console.log(prefix);
        }
    }
    prefix = prefix.split(',').sort().slice(1);
    console.log(prefix);
    // if(prefix[0].length === 0) {
    //     return "";
    // }
    return prefix[0];
};
console.log(longestCommonPrefix(["flower","flow","flight"]));
4

5 回答 5

2

检查数组null的大小为0. 如果其中任何一个条件为true,则返回一个空字符串。

function joinItems(items) {
  return items == null || items.length === 0 ? '' : items.join(', ');
}

console.log(joinItems(['Hello', 'World'])); // "Hello, World"
console.log(joinItems([]));                 // ""

您可以将其简化为以下表达式:

const joinItems = (items = []) => items?.join(', ') ?? '';

console.log(joinItems(['Hello', 'World'])); // "Hello, World"
console.log(joinItems());                   // ""

于 2020-05-07T17:18:11.790 回答
2

以下应该工作:

function returnEmptyIfNull(arr) {
    if(arr.length == 0)
        return "";
    return "not null";
}
于 2020-05-07T17:20:38.497 回答
1

return ""将返回一个空字符串。如果函数返回未定义,则您的函数还有其他问题。

function fn () {
  return "";
}
console.log(typeof fn());
// 'string'
于 2020-05-07T17:18:55.317 回答
1
function check(param){
    if (param.length == 0){
        return "";
    }
}

console.log(check([]));

对我来说工作正常,通过检查长度是否为 0 来检查数组是否为空。你得到未定义是因为你的 ' return "" ' 行没有运行。

于 2020-05-07T17:23:57.863 回答
1

您需要检查输入是否为数组,然后检查其长度是否为 0。

function checkArrayIsEmpty(arr) {
    if(Array.isArray(arr) && arr.length === 0) {
        return "";
    } else {
        return "not an empty array";
    }
}
于 2020-05-07T17:27:35.750 回答