我有这个数组:
[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
如何加入自定义索引数组?
答案 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)
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);