You are currently viewing Как преобразовать двумерный массив в объект в JavaScript ?

Как преобразовать двумерный массив в объект в JavaScript ?

В этой статье мы узнаем, как преобразовать двумерный массив в объект. Двумерный массив может содержать любое количество строк и двух столбцов.

Пример:

Input: [
 ["John", 12],
 ["Jack", 13],
 ["Matt", 14],
 ["Maxx", 15]
 ]

Output: {
          "John": 12,
 "Jack": 13,
 "Matt": 14,
 "Maxx": 15
 }

Для решения этой проблемы можно использовать следующие подходы.

Подход 1:

При таком подходе мы создаем пустой объект и используем Array.forEach() метод итерации по массиву. На каждой итерации мы вставляем первый элемент дочернего массива в объект в качестве ключа, а второй элемент-в качестве значения. Затем он возвращает объект после итераций.

Пример:

function arr2obj(arr) {

	// Create an empty object
	let obj = {};

	arr.forEach((v) => {

		// Extract the key and the value
		let key = v[0];
		let value = v[1];

		// Add the key and value to
		// the object
		obj[key] = value;
	});

	// Return the object
	return obj;
}

console.log(
	arr2obj([
		["John", 12],
		["Jack", 13],
		["Matt", 14],
		["Maxx", 15],
	])
);

Подход 2:

В этом подходе мы будем использовать Array.reduce() метод и инициализируйте накопитель пустым объектом. На каждой итерации мы присваиваем текущее значение в качестве значения ключа аккумулятора и возвращаем аккумулятор. Затем он возвращает объект после итераций.

Пример:

function arr2obj(arr) {
	return arr.reduce(
		(acc, curr) => {
			
			// Extract the key and the value
			let key = curr[0];
			let value = curr[1];

			// Assign key and value
			// to the accumulator
			acc[key] = value;

			// Return the accumulator
			return acc;
		},

		// Initialize with an empty object
		{}
	);
}

console.log(
	arr2obj([
		["Eren", "Yeager"],
		["Mikasa", "Ackermann"],
		["Armin", "Arlelt"],
		["Levi", "Ackermann"],
	])
);

Выход:

{ Eren: 'Yeager', Mikasa: 'Ackermann', Armin: 'Arlelt', Levi: 'Ackermann' }

Подход 3:

В этом подходе мы сначала выравниваем массив, используя Array.flat() метод, так что мы получаем одномерный массив. Затем мы можем создать пустой объект и повторить итерацию массива, чтобы назначить равномерно расположенные значения в качестве ключа объекта и странно расположенные значения в качестве значения.

Пример:

function arr2obj(arr) {

	// Flatten the array
	arr = arr.flat();

	// Create an empty object
	let obj = {};

	for (let i = 0; i < arr.length; i++) {
		if (i % 2 == 0) {

			// Extract the key and the value
			let key = arr[i];
			let value = arr[i + 1];

			// Assign the key and value
			obj[key] = value;
		}
	}

	return obj;
}

console.log(
	arr2obj([
		["Max", 19],
		["Chloe", 20],
		["Nathan", 22],
		["Mark", 31],
	])
);

Выход:

{   Max: 19,  Chloe: 20,   Nathan: 22,   Mark: 31  }