Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ลบรายการจากอาร์เรย์ซ้อนตามดัชนีใน JavaScript


สมมติว่าเรามีอาร์เรย์ซ้อนของออบเจกต์ดังนี้

const arr = [ 
  { value: 'some value' }, 
  { 
    array: [ 
      { value: 'some value' }, 
      { 
        array: [ 
          { value: 'some value' }, 
          { value: 'some value' }, 
        ], 
      }, 
      { value: 'some value' }, 
      { 
        array: [ 
          { value: 'some value' }, 
          { 
            array: [ 
              { value: 'delete me' }, 
              { value: 'some value' }, 
            ] 
          }, 
        ], 
      }, 
    ], 
  } 
];

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าวเป็นอาร์กิวเมนต์แรก และอาร์เรย์ของดัชนีเป็นอาร์กิวเมนต์ที่สอง

ฟังก์ชันควรลบ property value ที่ดัชนีทั้งหมดที่ระบุโดยอาร์เรย์ (อาร์กิวเมนต์ที่สอง)

ตัวอย่างโค้ด

โค้ดสำหรับการทำงานนี้จะเป็นดังนี้

const arr = [ 
  { value: 'some value' }, 
  { 
    array: [ 
      { value: 'some value' }, 
      { 
        array: [ 
          { value: 'some value' }, 
          { value: 'some value' }, 
        ], 
      }, 
      { value: 'some value' }, 
      { 
        array: [ 
          { value: 'some value' }, 
          { 
            array: [ 
              { value: 'delete me' }, 
              { value: 'some value' }, 
            ] 
          }, 
        ], 
      }, 
    ], 
  } 
]; 
const keys = [1, 3, 1, 0]; 
const getKeys = (arr, keys) => { 
  const recursiveFind = (arr, level) => { 
    const res = []; 
    arr.forEach((el, ind) => { 
      if (keys[level] !== ind) { 
        return res.push(el); 
      }; 
      if (level + 1 !== keys.length && el.array) { 
        res.push({ array: recursiveFind(el.array, level + 1) }); 
      }; 
    }); 
    return res; 
  }; 
  return recursiveFind(arr, 0); 
}; 
console.log(JSON.stringify(getKeys(arr, keys), undefined, 4));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้

[ 
  { 
    "value": "some value" 
  }, 
  { 
    "array": [ 
      { 
        "value": "some value" 
      }, 
      { 
        "array": [ 
          { 
            "value": "some value" 
          }, 
          { 
            "value": "some value" 
          } 
        ] 
      }, 
      { 
        "value": "some value" 
      }, 
      { 
        "array": [ 
          { 
            "value": "some value" 
          }, 
          { 
            "array": [ 
              { 
                "value": "some value" 
              } 
            ] 
          } 
        ] 
      } 
    ] 
  } 
]