Javascript 从数组的排序列表中提取唯一元素
到目前为止我所做的:Javascript 从数组的排序列表中提取唯一元素,javascript,algorithm,Javascript,Algorithm,到目前为止我所做的: var input = [1, 1, 3, 3, 3, 5, 5, 5, 9, 9, 9, 9]; var output = []; /*input.forEach(function(element){ // works as intended, but I know we can do better :) if(output.indexOf(element) == -1) output.push(element); });*/ outp
var input = [1, 1, 3, 3, 3, 5, 5, 5, 9, 9, 9, 9];
var output = [];
/*input.forEach(function(element){ // works as intended, but I know we can do better :)
if(output.indexOf(element) == -1)
output.push(element);
});*/
output.push(input[0]); // first element is always unique!
for(var i=1; i<input.length; i++){ // check rest of the elements
if(input[i] != output[i-1])
output.push(input[i]);
}
console.log(output);
var输入=[1,1,3,3,5,5,9,9,9];
var输出=[];
/*forEach(函数(元素){//按预期工作,但我知道我们可以做得更好:)
if(输出索引of(元素)=-1)
输出推送(元件);
});*/
output.push(输入[0]);//第一个元素总是唯一的!
对于(var i=1;i当查看其中的最后一项时,您需要使用输出的长度:
if(input[i] != output[output.length-1])
查看其中的最后一项时,需要使用输出的长度
:
if(input[i] != output[output.length-1])
输出大小并不总是在增加。。。
应该是
if(input[i]!=output[output.length-1])
输出大小并不总是在增加。。。
应该是
if(input[i]!=output[output.length-1])
如果将input[i]
与input[i-1]
进行比较,这会容易得多,例如:
output.push(input[0]); // first element is always unique!
for(var i=1; i<input.length; i++){ // check rest of the elements
if(input[i] != input[i-1]) // NOTE: changed output to input
output.push(input[i]);
}
output.push(输入[0]);//第一个元素总是唯一的!
对于(var i=1;i而言,如果将input[i]
与input[i-1]
进行比较,这会容易得多,例如:
output.push(input[0]); // first element is always unique!
for(var i=1; i<input.length; i++){ // check rest of the elements
if(input[i] != input[i-1]) // NOTE: changed output to input
output.push(input[i]);
}
output.push(输入[0]);//第一个元素总是唯一的!
对于(var i=1;i您可以通过按indexOf值筛选项目来返回每个值的第一项-
这样做的优点是不需要对列表进行排序
var input = [5,9,5,3,9,3,5,1,3,9,9,1];
var output =input.filter(function(itm,i, A){
return A.indexOf(itm)==i;
});
output.sort()
/* returned value: (Array)
1,3,5,9
*/
通过按indexOf值筛选项目,可以返回每个值的第一项-
这样做的优点是不需要对列表进行排序
var input = [5,9,5,3,9,3,5,1,3,9,9,1];
var output =input.filter(function(itm,i, A){
return A.indexOf(itm)==i;
});
output.sort()
/* returned value: (Array)
1,3,5,9
*/
是的,这将解决问题,如果您不想使用输出[output.length-1],您可以使用一个临时变量并在其中保存最后一个输出值,或者只需检查(输入[i]!=input[i-1]),因为它是一个排序列表。如果您不想使用输出[output.length-1],请使用单独的变量当你推动一个元素输出时,增加它。如果你不想使用输出[output.length-1],吉姆的答案是完美的。是的,这会解决问题。如果你不想使用输出[output.length-1],你可以使用一个临时变量并保存最后一个输出值,或者只是检查一下(输入[i]!=input[i-1])因为这是一个排序列表。如果不想使用输出[output.length-1],请使用单独的变量,并在每次按元素输出时递增。如果不想使用输出[output.length-1],jim的答案是完美的噢,JavaScript,在其他任何一种语言中,当您试图访问尚未编写的动态数组中的条目时,可能会出现异常。噢,JavaScript,在其他任何一种语言中,当您试图访问尚未编写的动态数组中的条目时,可能会出现异常。。