更新 JavaScript 陣列中的物件

Shraddha Paghdar 2023年1月30日 2022年5月11日
  1. 在 JavaScript 中使用 map() 更新物件
  2. 在 JavaScript 中使用 findIndex() 更新物件
更新 JavaScript 陣列中的物件

陣列是 JavaScript 中具有固定數字鍵和動態值的物件,可以在單個變數中包含任意數量的資料。陣列可以是一維或多維的。JavaScript 陣列可以直接儲存值,也可以儲存 JavaScript 物件。與其他語言不同,JS 陣列可以在同一陣列的不同索引處包含不同的資料型別。

在今天的帖子中,我們將瞭解如何在 JavaScript 中更新陣列的物件。

JavaScript 提供了兩種更新物件的方法,使用 map()findIndex()

在 JavaScript 中使用 map() 更新物件

這個由 JavaScript 提供的內建陣列方法遍歷原始陣列並建立新陣列,根據指定的條件完成元素。除了箭頭函式,你還可以傳遞迴調函式。map()forEach() 之間的唯一區別是 map() 將建立新陣列,而 forEach() 會改變原始陣列。

JavaScript 中 map() 的語法

Array.prototype.map(element => $updateCondition);
Array.prototype.map($callbackFn);

引數

$updateCondition:這個強制性引數指定應該為每個元素執行哪個操作。

$callbackFn:它是一個強制引數,它為要呼叫的陣列的每個元素指定一個函式。每次呼叫該函式時,它都會將結果返回到新陣列。

返回值

返回新陣列,其中元素是回撥函式的結果。

示例程式碼:

const osArray = [
    {id: 0, name: "Windows"},
    {id: 1, name: "Linux"},
    {id: 2, name: "MacOS"},
];
    
const updatedOSArray = osArray.map(p =>
  p.id === 1
    ? { ...p, name: 'Ubuntu' }
    : p
);

console.log("After update: ", updatedOSArray);

輸出:

After update:  [
    {id: 0, name: "Windows"},
    {id: 1, name: "Ubuntu"},
    {id: 2, name: "MacOS"}
]

在 JavaScript 中使用 findIndex() 更新物件

這個內建的陣列方法由 JavaScript 提供,它會查詢值與指定條件匹配的元素的索引。除了箭頭函式,你還可以傳遞迴調函式。findIndex()indexOf() 這兩種方法之間只有一個區別。findIndex() 用於複雜的匹配條件或物件資料型別,而 indexOf() 用於簡單條件或原始資料型別。

JavaScript 中 findIndex() 的語法

Array.prototype.findIndex(element => $condition);
Array.prototype.findIndex($callbackFn);

引數

$condition:這是一個強制性引數。使用者可以傳遞與陣列元素相關的任何條件,並找到第一個滿足條件的匹配元素。

返回值

返回滿足指定條件的數字索引。如果沒有元素滿足指定條件,則返回 -1

示例程式碼:

const osArray = [
    {id: 0, name: "Windows"},
    {id: 1, name: "Linux"},
    {id: 2, name: "MacOS"},
];
    
elementIndex = osArray.findIndex((obj => obj.id == 1));
console.log("Before update: ", osArray[elementIndex]);
osArray[elementIndex].name = "Ubuntu";
console.log("After update: ", osArray[elementIndex]);

輸出:

Before update: {id: 1, name: 'Linux'}
After update: {id: 1, name: 'Ubuntu'}
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

相關文章 - JavaScript Object