Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.02.2018, 15:24
Аспирант
Отправить личное сообщение для andypop Посмотреть профиль Найти все сообщения от andypop
 
Регистрация: 15.02.2014
Сообщений: 32

Инстанс объекта или массива
Есть переменная типа Array или Object, есть ли общепринятая функция которая возвращает новый пустой инстанс переменной?
Если Array, - []
Если Object, то {}
Ответить с цитированием
  #2 (permalink)  
Старый 22.02.2018, 15:42
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

"Родную" не видел но можно написать

var arr = [4,6], obj = {k:5};
	function liter(a){
		if(a instanceof Array) return [];
		if(a instanceof Object) return {};
	}
	console.log(liter(obj));
	console.log(liter(arr));
Ответить с цитированием
  #3 (permalink)  
Старый 22.02.2018, 15:55
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Не знаю насчет общепринятой, но можно так:
var arr = [1,2,3,4], 
     obj = {a:1,b:2};

function empty(it) {
    if(typeof it == 'object') {
       if(Array.isArray(it)) return [];
       else return {};
    } else return null;
}
alert(JSON.stringify(empty(arr)));
alert(JSON.stringify(empty(obj)));

Последний раз редактировалось Dilettante_Pro, 22.02.2018 в 15:59.
Ответить с цитированием
  #4 (permalink)  
Старый 22.02.2018, 21:35
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Конструкторы объектов типа Object, Array вызванные без аргументов возвращают "пустые" объекты и массивы соответственно.

var a = ["a", "b", "c"];
var o = { id: 60 };

var emptyA = a.constructor();
var emptyO = o.constructor();

console.log(emptyA, emptyO);
Ответить с цитированием
  #5 (permalink)  
Старый 23.02.2018, 02:54
Аспирант
Отправить личное сообщение для andypop Посмотреть профиль Найти все сообщения от andypop
 
Регистрация: 15.02.2014
Сообщений: 32

Спасибо! Написал так:
if (obj instanceof Object) value = obj.constructor();
Ответить с цитированием
  #6 (permalink)  
Старый 23.02.2018, 09:33
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

alert(([] instanceof Object)?'true':'false');
Ответить с цитированием
  #7 (permalink)  
Старый 23.02.2018, 15:23
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Nexus,
любишь все усложнять
alert([] instanceof Object);
Ответить с цитированием
  #8 (permalink)  
Старый 23.02.2018, 20:16
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

j0hnik, я просто хотел показать тс, что его проверка несколько некорректная, если ему нужно проверить, является ли переменная объектом, а не массивом.

Написал "сложно", т.к. думал, что bool к строке приведется, как int (проверять лень было).
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод данных из массива JSON Vincent Vega jQuery 19 04.03.2016 13:44
Посоветуйте самоучитель или обучающий сайт или видео курсы Seva1986 (X)HTML/CSS 14 26.01.2012 22:03
формирование обьекта или массива на основе полей формы birst Общие вопросы Javascript 1 05.12.2008 17:50
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00
Не работает перебор свойств объекта BANick Общие вопросы Javascript 1 16.09.2008 22:46