@symnoob

Jquery — multidimensional array — как пробежаться по Массиву и изменить данные?

Добрый день Форум есть ли какая функция для изминения данных внутри массива?

или всётаки придется использовать each?

речь идёт о multidimensional array

[{"id":"3","info":"my Info","startDate":"Fri Jun 08 2018 00:00:00 GMT+0200","endDate":"Thu Jun 21 2018 00:00:00 GMT+0200"},{"id":"4","info":"my Info 2","startDate":"Thu Aug 02 2018 00:00:00 GMT+0200","endDate":"Mon Aug 20 2018 00:00:00 GMT+0200"}]


я хочу пробежаться по массиву и применить new Date() к startDate и endDate ключам
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
BRAGA96
@BRAGA96
У Вас массив объектов и Вы хотите изменить свойство объекта по ключу. Для этого нужно пробежаться циклом по массиву, чтобы найти объекты и пробежаться по ключам объекта, чтобы найти нужные ключи и изменить их значения.
var array = [{"id":"3","info":"my Info","startDate":"Fri Jun 08 2018 00:00:00 GMT+0200","endDate":"Thu Jun 21 2018 00:00:00 GMT+0200"},{"id":"4","info":"my Info 2","startDate":"Thu Aug 02 2018 00:00:00 GMT+0200","endDate":"Mon Aug 20 2018 00:00:00 GMT+0200"}];
for (var object in array) {
	for (var key in array[object]) {
		if (key === 'startDate' || key === 'endDate') {
			array[object][key] = new Date(array[object][key]);
		}
	}
}
console.log(array);


Или можете запихнуть это в функцию, задать нужные ключи и в callback функции изменять значения.
var array = [{"id":"3","info":"my Info","startDate":"Fri Jun 08 2018 00:00:00 GMT+0200","endDate":"Thu Jun 21 2018 00:00:00 GMT+0200"},{"id":"4","info":"my Info 2","startDate":"Thu Aug 02 2018 00:00:00 GMT+0200","endDate":"Mon Aug 20 2018 00:00:00 GMT+0200"}];

changeArray(array, ['startDate', 'endDate'], function(value) {
	return new Date(value);
});

function changeArray(array, keys, change) {
	var find = function(key) {
		if (typeof keys === 'string') {
			return key === keys ? true : false;
		} else if (Array.isArray(keys)) {
			return keys.includes(key);
		}
	};
	for (var object in array) {
		for (var key in array[object]) {
			if (find(key)) {
				array[object][key] = change(array[object][key]);
			}
		}
	}
	return array;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы