2014-02-23 31 views
0

你好,我想问一个简单的问题,从上面的例子,会输出这里的示例代码阵列上的Javascript

<script> 
var mycars=["Saab","Volvo","BMW","Honda","BMW","Suzuki","Volvo","Toyota","Saab","Nissan"]; 
var count=0; 
for (i=0;i<mycars.length;i++) 
{ 
document.write(mycars[i] + "<br>"); 
count++; 
} 
document.write("Total Data is "+count); 
</script> 

: 萨博 沃尔沃 BMW 本田 BMW 铃木 沃尔沃 丰田 Saab Nissan 总数据为10

如果我想打电话给每辆车, e宝马,沃尔沃和萨博它被称为两次,并且我想要它调用一次,那么总数据将为7.

我该如何给布尔条件这个?所以它不会再打电话?感谢

回答

1

你可以过滤掉重复的:

mycars = mycars.filter(function(car, index, cars){ return cars.indexOf(car, index + 1) === -1; }); 

完成这一步之后,几乎每个不同的值的最后一个实例会从数组中删除。如果您需要保留原始数组,然后使用过滤的一个新的变量:

var unique_cars = mycars.filter(function(car, index, cars){ return cars.indexOf(car, index + 1) === -1; }); 

请注意,您需要在旧的浏览器匀场Array.prototype.indexOf

+0

如果我不想抹去它,但给某些条件,一些车被称为? – Koyix

+0

也许,如果它可以使用布尔条件? – Koyix

+0

您可以创建一个对象以跟踪您迄今为止已写入的汽车。在循环之前:'var is_car_written = {};',然后在你的循环中:'if(is_car_written [mycars [i]]){is_car_written [mycars [i]] = true; document.write(mycars [i] +“
”); }” – Paulpro