一、基本概念
對象是JavaScript中很常見的數據類型,它由一組無序的鍵值對組成,每個鍵值對都是由鍵(字元串)和值(任何JavaScript數據類型)組成的。在JavaScript中,我們可以使用Object.keys()和Object.values()方法來分別獲取一個對象的所有鍵和值。而對象轉數組的操作,通常指將一個對象轉為一個由鍵值對組成的數組。
對象轉數組是一項非常基礎的操作,但在實際的開發中非常常見。比如我們需要將從後端獲取的數據轉換為表格展示,此時我們需要將數據轉換為數組,再根據表格的格式展示。又比如我們需要對某個對象進行快速查找,此時我們也需要將對象轉換為數組等等。
二、常見方法
在JavaScript中,我們可以使用多種方式將一個對象轉為數組。這裡將介紹幾種常見的方法。
1. Object.keys()和Object.values()
const obj = {
name: 'Jack',
age: 20,
gender: 'male'
};
const keys = Object.keys(obj); //獲取所有鍵
const values = Object.values(obj); //獲取所有值
console.log(keys); //輸出 ['name', 'age', 'gender']
console.log(values); //輸出 ['Jack', 20, 'male']
上述代碼中,我們分別使用了Object.keys()和Object.values()方法將一個對象轉為了數組。這兩個方法返回的數組均與原對象的鍵值對應,其中Object.keys()返回的是鍵數組,Object.values()返回的是值數組。
2. Object.entries()
const obj = {
name: 'Jack',
age: 20,
gender: 'male'
};
const entries = Object.entries(obj); //獲取所有鍵值對
console.log(entries); //輸出 [['name', 'Jack'], ['age', 20], ['gender', 'male']]
Object.entries()方法可以同時獲取對象中所有的鍵和值,並將其組合為一個二維數組。其中,每個子數組都由鍵和值組成。
3. 手動循環
const obj = {
name: 'Jack',
age: 20,
gender: 'male'
};
const arr = [];
for(let key in obj) {
arr.push([key, obj[key]]);
}
console.log(arr); //輸出 [['name', 'Jack'], ['age', 20], ['gender', 'male']]
通過手動循環可以將一個對象轉為數組。其中,我們需要使用for-in循環獲取對象的所有鍵,然後逐個將鍵和值組成一個數組,並將其推到目標數組中。
三、應用場景
對象轉數組其實是一項非常實用的操作,在很多場景中都可以使用到。這裡將列舉一些常見的應用場景。
1. 數據表格
在Web開發中,表格展示是一項非常常見的需求。而很多時候我們需要將從後端獲取的數據轉為表格以便於展示。因此,很多時候我們需要將對象轉為數組。
const obj = {
name: 'Jack',
age: 20,
gender: 'male'
};
const arr = Object.entries(obj);
// table為需要展示表格的DOM元素
let table = document.createElement('table');
let tbody = document.createElement('tbody');
arr.forEach(item => {
let tr = document.createElement('tr');
let td1 = document.createElement('td');
let td2 = document.createElement('td');
td1.textContent = item[0];
td2.textContent = item[1];
tr.appendChild(td1);
tr.appendChild(td2);
tbody.appendChild(tr);
});
table.appendChild(tbody);
document.body.appendChild(table);
上述代碼中,我們將一個對象轉為了數組,並展示為了一個表格元素。
2. 快速查找
在某些場景下,我們需要對一個對象進行快速查找。比如一個數組中包含多個對象,每個對象都有不同的值,我們需要找到其中某個對象。這時我們可以將對象轉為數組,然後通過數組中元素的屬性值快速查找到需要的對象。
const arr = [
{
name: 'Jack',
age: 20,
gender: 'male'
},
{
name: 'Tom',
age: 22,
gender: 'male'
},
{
name: 'Lucy',
age: 18,
gender: 'female'
}
];
let obj = {};
arr.forEach(item => {
obj[item.name] = item;
});
console.log(obj['Jack']); //獲取的是對象{name: 'Jack', age: 20, gender: 'male'}
上述代碼中,我們將一個包含多個對象的數組轉為了以對象的name屬性為鍵的對象,然後通過鍵查找到了需要的對象。
四、總結
通過上述介紹,我們可以看出對象轉數組是一個非常基礎但實用的操作,在JavaScript中有多種實現方式。值得注意的是,對象轉數組是一種不可逆的操作,可能會導致數據的丟失。因此,在使用對象轉數組時需要謹慎處理。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/153724.html