自定义索引时Javascript连接错误

时间:2018-06-12 12:23:40

标签: javascript

我有这个数组:

[10: "AAA", 30: "BBB", 50: "CCC", 60: "DDD", 80: "EEE", 81: "FFF", 82: "GGG", 83: "HHH"]

并在使用命令后:

  

myarray.join(' |')

它将返回多个重复的管道。函数join表示存在索引为0-10,11-29等的数组,如:[empty × 10, "AAA", empty × 19, "BBB", empty × 19, "CCC", empty × 9, "DDD", empty × 19, "EEE", "FFF", "GGG", "HHH"]

结果是:

  

| | | | | | | | | | AAA | | | | | | | | | | | |   | | | | | | | | BBB | | | | | | | | | | | | | | |   | | | | | CCC | | | | | | | | | | DDD | | | | | | |   | | | | | | | | | | | | | EEE | FFF | GGG | HHH

但预期结果是:

  

AAA | BBB | CCC | DDD | EEE | FFF | GGG | HHH

如何加入自定义索引数组?

3 个答案:

答案 0 :(得分:2)

filter空白或未定义的条目然后正常加入。

myarray = [];
myarray[10] = 'AAA'; myarray[30] = 'BBB'    
result = myarray.filter(x => x != '' && x != undefined).join('|')
console.log(result)

修改: 对于这种特殊情况,filter可以简化为:

result = myarray.filter(x => x).join('|')

答案 1 :(得分:1)

您可以使用返回true的回调过滤稀疏数组并加入结果。



var array = [],
    result;

array[10] = "AAA";
array[30] = "BBB";
array[50] = "CCC";
array[60] = "DDD";
array[80] = "EEE";
array[81] = "FFF";
array[82] = "GGG";
array[83] = "HHH";
result = array.filter(_ => true).join('|');
    
console.log(result);




答案 2 :(得分:0)

使用Array.filter



let arr = [];
arr[10] = "AAA", arr[30] = "BBB", arr[50] = "CCC", arr[60] = "DDD", arr[80] = "EEE", arr[81] = "FFF", arr[82] = "GGG", arr[83] = "HHH";

let result = arr.filter(v => !!v).join('|');
console.log(result);