JavaScript:更改数组中的所有重复元素

时间:2014-11-21 05:50:20

标签: javascript arrays replace compare

我有一个像这样的数组

var array=[[1,'a'],[1,'b'],[2,'c'],[2,'b'],[2,'d'],[3,'a'],[3,'s'],[3,'w'],[3,'q'],[4,'w']]

和我想要的输出:

1   a
    b
2   c
    b
    d
3   a

等等。所以我想用''替换所有的数字。

试过这个,但它只比较了两个元素。

for( var i=0; i<array.length-1; i++ ) {
        if ( array[i][0] == array[i+1][0] ) {
            array[i+1][0]='';
        }
    }   

2 个答案:

答案 0 :(得分:1)

你需要添加外部循环:

   for(var j=0; j < array.length; j++){
for( var i=0; i<array.length; i++ ) {
        if ( array[i][0] == array[j][0] && i != j) {
            array[i][0]='';
        }
    } 
}

答案 1 :(得分:1)

按照问题中显示的格式打印代码打印数据,但不修改数据。

//print first data
println( string(array[0][0]) + '  ' + array[0][1] )
var prevNumber = array[0][0]  // record the number of data printed last.

for( var i=1; i<array.length-1; i++ ) {
    if ( array[i][0] == prevNumber ) {  // if same number, print ' ' instead of number.
        println( ' ' + '   ' + array[i][1] )
    } else { // number is changed
        println( array[i][0] + '   ' + array[i][1] )
        prevNumber = array[i][0]  // record the number of data printed last.
    }
}   

很容易将数据中的一部分数据降级,但很难或不可能恢复之后删除的数据。这就是为什么我不修改数组的数据,而是修改要打印的代码。