Определить тип массива
Здравствуйте!
Подскажите как отличить обычный массив от ассоциативного ?
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, время: 14:38. |