Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Инстанс объекта или массива (https://javascript.ru/forum/misc/72735-instans-obekta-ili-massiva.html)

andypop 22.02.2018 15:24

Инстанс объекта или массива
 
Есть переменная типа Array или Object, есть ли общепринятая функция которая возвращает новый пустой инстанс переменной?
Если Array, - []
Если Object, то {}

j0hnik 22.02.2018 15:42

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

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));

Dilettante_Pro 22.02.2018 15:55

Не знаю насчет общепринятой, но можно так:
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)));

Malleys 22.02.2018 21:35

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

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

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

console.log(emptyA, emptyO);

andypop 23.02.2018 02:54

Спасибо! Написал так:
if (obj instanceof Object) value = obj.constructor();

Nexus 23.02.2018 09:33

alert(([] instanceof Object)?'true':'false');

j0hnik 23.02.2018 15:23

Nexus,
любишь все усложнять :write:
alert([] instanceof Object);

Nexus 23.02.2018 20:16

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

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


Часовой пояс GMT +3, время: 23:06.