Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การย้อนกลับอาร์เรย์โดยไม่เปลี่ยนตำแหน่งขององค์ประกอบบางอย่าง JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ของตัวอักษร ฟังก์ชันควรย้อนกลับอาร์เรย์โดยไม่เปลี่ยนดัชนีของ '#' ที่แสดงในอาร์เรย์ ดังตัวอย่างด้านล่าง -

Array [18,-4,'#',0,8,'#',5] ควรคืนค่า -

[5, 8, "#", 0, -4, "#", 18]

ในที่นี้ ควรกลับตัวเลข ยกเว้น '#' โดยคงดัชนีเดิมไว้

ตัวอย่าง

const arr = [18, -4, '#', 0, 8, '#', 5];
const arr1 = [18, -4, 0, '#', 8, '#', 5];
const specialReverse = (arr = []) => {
   let removed = arr.reduce((acc, val, ind) => {
      return val === '#' ? acc.concat(ind) : acc;
   }, []);
   let reversed = arr.filter(val => val !== '#').reverse();
   removed.forEach(el => reversed.splice(el, 0, '#'));
   return reversed;
};
console.log(specialReverse(arr));
console.log(specialReverse(arr1));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

[
5, 8, '#', 0,
-4, '#', 18
]
[
5, 8, 0, '#',
-4, '#', 18
]