Деструктуризация в JS. - IZIART

Разработка сайтов
индивидуальный дизайн

Главная » JS » Деструктуризация в JS.

Деструктуризация в JS.

Обновлено: 05.10.2023
js

Деструктуризация позволяет вытащить значения из массивов и объектов в переменные более удобным и коротким способом.

Деструктуризация массива

// Массив
let nameArr = ["Sanya", "Vanya"]

/*деструктурирующее присваивание из массива*/
let [nameOne, nameTwo] = nameArr;

Деструктуризация объекта

Работает аналогично массивам

// Объект
let argObj = {
	device: "Samsung", 
	model: "Galaxy"
}

/*деструктурирующее присваивание из объекта*/
let {device, model} = argObj;

Значение по умолчанию

При деструктуризации можно задать значение по умолчанию

let nameArr = ["Sanya"]

/*Задаем значения по умолчанию*/
let [nameOne= "noName", nameTwo="noName"] = nameArr;

console.log("nameOne", nameOne); //Sanya
console.log("nameTwo", nameTwo); //noName

Переименовка переменных при присваивании

Можно также переопределить название переменных, которым присваиваются значения при деструктуризации

// Объект
let argObj = {
	device: "Samsung", 
	model: "Galaxy"
}

/*деструктурирующее присваивание с переименованием*/
let {device: d, model: m} = argObj;

console.log(m); //Galaxy
console.log(d); //Samsung

Присваивание остатка

При необходимости вытащить одно свойство объекта в переменную, а остальные присвоить куда-нибудь. Можно сделать следующим образом:

// Объект
let argObj = {
	device: "Samsung", 
	model: "Galaxy",
	price: "30 000"
}

/*деструктурирующее присваивание*/
let {device, ...other} = argObj;
console.log("d", device); //Samsung
console.log("m", other); //Object { model: "Galaxy", price: "30 000" }

Деструктуризация в цикле

При необходимости деструктуризировать большой объект, можно воспользоваться циклом

let option = {
	host: 'localhost',
	port: 3000,
	user: 'default'
};

/*цикл по ключам и значениям*/
for (let [key, value] of Object.entries(option)) {
  console.log(`${key}:${value}`); 
}

// host:localhost
// port:3000
// user:default

Вложенная деструктуризация

/*сложная вложенная деструктуризация*/
let mobile = {
	device: "Samsung", 
	screen: { width: 360, height: 480 },  //объект
	color: ["Black", "White"], //массив
};

let {
	device,
	screen: { width, height	},
	color: [ colorBlack, colorWhite	]
} = mobile;

console.log(device); // Samsung
console.log(width); // 360
console.log(height); // 480
console.log(colorBlack); // Black
console.log(colorWhite); // White