Определить тип массива
Здравствуйте!
Подскажите как отличить обычный массив от ассоциативного ? var a = [1,2,3,4,5]; var b = {'var1':1, 'var2':2} |
Для начала прочитать это: http://alljs.ru/articles/array/whatis
|
Однозначно, учить основы! По теме:
if( !Array.isArray ) Array.isArray = function(){ return Object.prototype.toString.call( arguments[ 0 ] ) == "[object Array]"; }; var a = [1,2,3,4,5]; var b = {'var1':1, 'var2':2}; alert([ Array.isArray( a ), Array.isArray( b ) ]); |
Цитата:
|
Цитата:
|
Цитата:
Ассоц-массив это таблица из двух стобликов (слово - ассоциация) хэш это таблица из двух столбцов (ключ - значение) В ДАННОМ СЛУЧАЕ В JS это одно и то же! Всем привет! |
var a = [1, 2, 3, 4, 5]; // массив var b = { var1: 1, var2: 2 }; // объект, который может выступать как ассоциативный массив alert(a instanceof Array); // true alert(b instanceof Object); // true // при этом alert(a instanceof Object); // true |
Ну обьект я имею ввиду не как Класс, а как сама суть устройство!
Классы то ясен хрен наследуют)) То есть a в данном случае имеет дедушку Object/ Оператор доходит до Array? смотрит, не, не то, идет дальше, смотрит , да, во во, то! И выдает тру! a => Array => Object |
Щас обьясню в чем разница в стиле моей книги)
ХЭШ это фигня которую придумали люди, абстракция) это просто название) хэшэм может работать все из двух столбцов , где правое значение в строчке логически соответствует левому! Даже долбанный массив обычный можно понимать как хэш. В ДАННО СЛУЧАЕ это просто игра слов! А то что люди говорят - это не то, это другое, это выевыемоны) можешь их даже не слушать и не напрягать мозг) я обьяснил что это такое, нет в js ни хешей нет ни ассоц массивов) ни чего этого нет. Дело в том что это все одно и то же, ПОТОМУ ЧТО РАБОТАЕТ ОДИНАКОГО ПРОСТО НАЗВАНИЯ РАЗНЫЕ, да и обьекты в js с этим тоже одно и то же отому что подходят под описание этих хешей, ассоц массивов и.т.п.) вот. |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Строго говоря, js - объектный язык, так как все типы данных, кроме примитивных (и то, те имеют обёртку) являются объектными. Поэтому да, тут стёртая граница между объектами и ассоциативными массивами. А в С++, например, объект - это экземпляр класса, а ассоциативный массив - это, фактически, обычный массив, в котором доступ осуществляется по произвольному ключу (а не только по числовому). |
Цитата:
|
Цитата:
|
Цитата:
На остальное отвечать нет смысла, т.к. вопрос по сути не ко мне, а к идеологам или разработчиками языков. |
Цитата:
Цитата:
|
melky,
Есть ключи и есть данные на против них. Если на против лежит функция КТО СКАЗАЛ ЧТО ЭТО МЕТОД? Это данные! Мы можем их получить, сохранить и передать, можем даже вызвать оператором (), но тогда это будет уже метод, а нам этого не нужно чтобы не потерять идеологию ассоц-массива, и использовать обьект именно как ассоц-массив. Gozar под методом подразумевал ФУНКЦИЮ ЛЕЖАЩУЮ В СВОЙСТВЕ), ну по крайней мере я так понял. п.с. все в js имеет метод .toString(), в js не может быть ассоц массивов.. потому что в js все имеет метод .toString() тогда так получается)? |
Цитата:
Какое отношение имеют твои слова к тому, что у асс. массивов нет методов. Функций у них тоже нет, кстати. |
Цитата:
|
Цитата:
Может я КРИВО ВЫРАЗИЛСЯ что мы ни чего не можем вызывать в ассоц массиве, по этому ты это ЕЩЕ РАЗ ЭТО НАПИСАЛ как бы поддакивая мне? |
Так хорошо, щас ты отпишешься на все верхние сообщений, потом удали эти отписи, там путаница, давай заного, отвечай только НА ЭТО
В ассоц массивах не может быть методов, источник? |
Цитата:
Цитата:
|
Цитата:
![]() ЗЫ. пожалуйста, закройте тему. пусть ведут интеллектуальную беседу в личных сообщениях. |
Именно по этому в php делается так:
count($arr); |
Цитата:
|
Цитата:
|
Цитата:
ну давайте сделаем фантастику фантстикой q = [1,2,3,4,5,6,7, "восемь"] - массив? да, это массив, вектор... ок.. продолжаем.. q = [1,2,3,4,5,6, function(){alert('семь')}] - это массив? |
Цитата:
|
Чувак ТС по ходу знатный тролль :)
|
Цитата:
var q = [1,2,3,4,5,6, function(){alert('семь')}]; alert(typeof q); |
Вот так и разбиваются девичьи мечты о суровую реальность :)
|
Цитата:
да.... это не массив, век живи век учись)))) |
Цитата:
А насчёт этого спора... Моё мнение: a= {}; // хеш, асс. массив и т.д. b= new Error(); // объект |
Цитата:
new Object({a:3}) |
А меня не напрягает называть объект - объектом ;)
|
Цитата:
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 05:11. |