这是一个arrays.If数组,您可以看到,它们的长度-值是consecutive.But,一个数组丢失了,我试图编写一个方法,返回缺失数组的长度。我的方法可以得到缺失数组的真正长度,但是我得到了一个关于空value.Now的错误消息,我尝试过滤空值。
TypeError:无法读取getLengthOfMissingArray at getLengthOfMissingArray的属性“长度”,at / null /framework/javascript/cw-2.js:179:21 at Promise._execute at Promise._resolveFromExecutor at Promise._resolveFromExecutor at Object.handleError at ContextifyScript.Script.runInThisContext at 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;
}发布于 2017-01-18 15:39:57
我没有answer.But你的代码看起来很复杂:
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,则将其按升序排序并计数。如果有一个地方失踪,保持在这个价值。
示例:http://jsbin.com/ribaxoveyo/edit?console
发布于 2017-01-18 15:31:03
我觉得你应该用!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;
}https://stackoverflow.com/questions/41723189
复制相似问题