JavaScript 如何實現數組末尾添加元素并去重后返回指定位數的逆序元素?
在編寫 javascript 函數時,經常會遇到需要處理數組的場景。本文將介紹如何編寫一個函數,該函數會向數組末尾添加一個新的元素,并確保該元素在數組中是唯一的。接著,它會返回數組最后三個元素的逆序列表。
根據題主的需求,我們需要實現一個名為 updatelist 的函數。這個函數接受兩個參數:一個是現有的數組 list,另一個是要添加的新元素 newelement。函數的邏輯如下:
- 檢查數組中是否存在與新元素所有字段值都相同的元素。
- 如果存在這樣的元素,則將其刪除。
- 將新元素添加到數組的末尾。
- 從數組中截取最后三個元素,并返回它們的逆序列表。
以下是實現該功能的 javascript 代碼:
function updateList(list, newElement) { // 檢查 list 是否為數組,如果不是則初始化為空數組 if (!Array.isArray(list)) { list = []; } // 定義一個函數,用于比較兩個對象是否完全相同 const isSameObject = (obj1, obj2) => { return Object.keys(obj1).length === Object.keys(obj2).length && Object.keys(obj1).every(key => obj1[key] === obj2[key]); }; // 查找數組中與新元素完全相同的對象的索引 const index = list.findIndex(item => isSameObject(item, newElement)); // 如果找到相同元素,則刪除它 if (index !== -1) { list.splice(index, 1); } // 將新元素添加到數組末尾 list.push(newElement); // 截取最后三個元素并返回它們的逆序列表 return list.slice(-3).reverse(); } // 測試示例1 let list1 = [ { id: 2 }, { id: 3 }, { id: 4 } ]; let newElement1 = { id: 2 }; console.log(updateList(list1, newElement1)); // 輸出: [{id: 4}, {id: 3}, {id: 2}] // 測試示例2 let list2 = [ { id: 1 }, { id: 2 }, { id: 3 }, { id: 4 } ]; let newElement2 = { id: 3 }; console.log(updateList(list2, newElement2)); // 輸出: [{id: 4}, {id: 1}, {id: 3}] // 測試示例3 let list3 = [ { id: 1 }, { id: 2 }, { id: 3 }, { id: 4 } ]; let newElement3 = { id: 2 }; console.log(updateList(list3, newElement3)); // 輸出: [{id: 4}, {id: 3}, {id: 2}]
以上代碼通過定義 issameobject 函數來比較兩個對象是否完全相同,然后使用 findindex 方法查找數組中是否存在與新元素完全相同的對象。如果找到,則使用 splice 方法刪除該對象。接著,通過 push 方法將新元素添加到數組末尾,最后使用 slice 和 reverse 方法返回數組最后三個元素的逆序列表。
通過這種方法,我們可以確保數組的元素是唯一的,并且可以按照指定的方式返回數組的部分元素。
立即學習“Java免費學習筆記(深入)”;
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END