它是代码战中的kata。它是一个数组数组。如果你按照它们的长度排序数组,你会看到它们的长度值是连续的。但是缺少一个数组.I试图写一个方法,返回缺少数组的长度。 我的方法可以获得缺少数组的真实长度,但是我收到一条关于null值的错误消息。现在,我试图过滤空值。
TypeError:无法读取属性'长度'在getLengthOfMissingArray中为null 一开始 在它 在/runner/frameworks/javascript/cw-2.js:179:21 在Promise._execute 在Promise._resolveFromExecutor 在新的承诺 在描述 at Object.handleError 在ContextifyScript.Script.runInThisContext中 在Object.exports.runInThisContext
function getLengthOfMissingArray(arrayOfArrays) {
var str=[];
if (arrayOfArrays=="")
return 0;
var Long=arrayOfArrays.length;
for(var i=0;i<Long;i++){
if (arrayOfArrays[i]=="")
return 0;
else
str.push(arrayOfArrays[i].length);
}
str.sort(function(a,b){return a>b?1:-1});
var sum=0,n=str.length;
var totol=((str[0]+str[n-1])/2)*(n+1);
for(var i=0;i<str.length;i++){
sum=sum+str[i];
}
return totol-sum;
}
答案 0 :(得分:1)
我认为你需要使用!arrayOfArrays
代替arrayOfArrays==""
,就像这样......
function getLengthOfMissingArray(arrayOfArrays) {
var str=[];
if (!arrayOfArrays)
return 0;
var Long=arrayOfArrays.length;
for(var i=0;i<Long;i++){
if (!arrayOfArrays[i])
return 0;
else
str.push(arrayOfArrays[i].length);
}
str.sort(function(a,b){return a>b?1:-1});
var sum=0,n=str.length;
var totol=((str[0]+str[n-1])/2)*(n+1);
for(var i=0;i<str.length;i++){
sum=sum+str[i];
}
return totol-sum;
}
答案 1 :(得分:0)
我没有答案。但是你的代码看起来很复杂:
var mainarray=[]; // your array containing arrays
var left=mainarray.map(typeof el=="object"?el.length:0).sort().reduce((num,length)=>num+1==length?num+1:num,-1)+1;//if your first array length is 1, -1 has to be replaced with 0.
获取每个长度,如果它不是长度为0的数组,则按升序排序并计数。如果遗失的地方,请保持这个价值。