【发布时间】:2017-06-18 00:02:40
【问题描述】:
我能够在“减少”之后提取所有单个整数,但当所有重复项且输出应为 0 时无法正常工作,没有遇到我的 else 或 else if - 代码一直输出 0 与单个整数
var singleNumber = function(nums) {
var sorted_array = nums.sort();
for (var i=0; i < sorted_array.length; i++){
var previous = sorted_array[i-1];
var next = sorted_array[i+1];
var singles = {key: 0};
var singlesArray = [];
if (sorted_array[i] !== previous && sorted_array[i] !== next){
singlesArray.push(sorted_array[i]);
singlesArray.reduce(function(singles, key){
singles.key = key;
//console.log('key', key);
return singles.key;
},{});
}
else if(singlesArray.length === 0) {
singles.key = 0;
return singles.key;
}
}
console.log('singles.key', singles.key);
return singles.key;
};
console.log(singleNumber([2,1,3,4,4]));
【问题讨论】:
-
在任何时候都不会分配给
singleNumber()范围内的singles变量。唯一一次给singles分配一个非零值是在闭包的范围内。 -
谢谢@Phylogenesis 我明白你的意思,但坚持“如何”为 singleNumber() 范围内的单打分配一个非零值。我尝试将单曲移到 for 循环之外和 singleNumber() 内,仍然为 0 ..
-
其他人有什么想法吗?我将条件重新安排在第一个“if 语句”中,但仍然得到 singles.key = 0 ... 将不胜感激
-
我不清楚你的问题。你希望
singleNumber()最终做什么?只返回一组不同的整数?singleNumber([2,1,3,4,4]) //[2,1,3,4] -
感谢@Kevin。我想将 1、2、3 作为整数返回……如果只输入了重复项,则将 0 作为整数返回。我对范围做了一些更改,到目前为止它正在返回 [1] .. 你能看到这个 jsbin 吗? jsbin.com/qujuwas/82/edit?js,console
标签: javascript arrays integer reduce