<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Deerua about Coding: последние заметки с тегом &amp;laquo;in_array&amp;raquo;</title><link>http://deer.org.ua/keywords/inarray/</link><description></description><language>ru</language><generator>e2 (http://blogengine.ru/)</generator><item><title>JavaScript in_array / расширяем функционал ;)</title><guid isPermaLink="true">http://deer.org.ua/2009/02/08/1/</guid><link>http://deer.org.ua/2009/02/08/1/</link><comments>http://deer.org.ua/2009/02/08/1/comments/</comments><description>&lt;pre&gt;&lt;span class="hl-comment"&gt;// Есть массив, хочем узнать входит ли в него элемент ;)
&lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;simplaArray&lt;/span&gt;&lt;span class="hl-default"&gt; = &lt;/span&gt;&lt;span class="hl-brackets"&gt;[ &lt;/span&gt;&lt;span class="hl-number"&gt;5&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;10&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;15&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;20&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-number"&gt;25&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-default"&gt;;
&lt;/span&gt;
&lt;span class="hl-comment"&gt;// Расширим прототайп :)
// Простой способ&lt;/span&gt;
&lt;span class="hl-builtin"&gt;Array&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;prototype&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;in_array&lt;/span&gt;&lt;span class="hl-default"&gt; = &lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;obj&lt;/span&gt;&lt;span class="hl-brackets"&gt;) {
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;for&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;l&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;length&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-code"&gt; &amp;lt; &lt;/span&gt;&lt;span class="hl-identifier"&gt;l&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-code"&gt;++&lt;/span&gt;&lt;span class="hl-brackets"&gt;) {
		&lt;/span&gt;&lt;span class="hl-reserved"&gt;if&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt; == &lt;/span&gt;&lt;span class="hl-identifier"&gt;obj&lt;/span&gt;&lt;span class="hl-brackets"&gt;) {
			&lt;/span&gt;&lt;span class="hl-reserved"&gt;return true&lt;/span&gt;&lt;span class="hl-code"&gt;;
		&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
	}
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;return false&lt;/span&gt;&lt;span class="hl-code"&gt;;
&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
&lt;/span&gt;
&lt;span class="hl-comment"&gt;// Можно и в обьектах покопаться &lt;/span&gt;
&lt;span class="hl-identifier"&gt;Object&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;prototype&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;in_array&lt;/span&gt;&lt;span class="hl-default"&gt; = &lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;datum&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;strict&lt;/span&gt;&lt;span class="hl-brackets"&gt;) {
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;strict&lt;/span&gt;&lt;span class="hl-brackets"&gt;) &lt;/span&gt;&lt;span class="hl-reserved"&gt;function &lt;/span&gt;&lt;span class="hl-identifier"&gt;equals&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;a&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-identifier"&gt;b&lt;/span&gt;&lt;span class="hl-brackets"&gt;) { &lt;/span&gt;&lt;span class="hl-reserved"&gt;return &lt;/span&gt;&lt;span class="hl-identifier"&gt;a&lt;/span&gt;&lt;span class="hl-code"&gt; === &lt;/span&gt;&lt;span class="hl-identifier"&gt;b &lt;/span&gt;&lt;span class="hl-brackets"&gt;}
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;else function &lt;/span&gt;&lt;span class="hl-identifier"&gt;equals&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;a&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-identifier"&gt;b&lt;/span&gt;&lt;span class="hl-brackets"&gt;) { &lt;/span&gt;&lt;span class="hl-reserved"&gt;return &lt;/span&gt;&lt;span class="hl-identifier"&gt;a&lt;/span&gt;&lt;span class="hl-code"&gt; == &lt;/span&gt;&lt;span class="hl-identifier"&gt;b &lt;/span&gt;&lt;span class="hl-brackets"&gt;}
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;for &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;i &lt;/span&gt;&lt;span class="hl-reserved"&gt;in this&lt;/span&gt;&lt;span class="hl-brackets"&gt;) &lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;equals&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;datum&lt;/span&gt;&lt;span class="hl-brackets"&gt;) ) &lt;/span&gt;&lt;span class="hl-reserved"&gt;return true&lt;/span&gt;&lt;span class="hl-code"&gt;;
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;return false&lt;/span&gt;&lt;span class="hl-code"&gt;;
&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
&lt;/span&gt;
&lt;span class="hl-comment"&gt;// Или через RegExp
&lt;/span&gt;&lt;span class="hl-builtin"&gt;Array&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;prototype&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;in_array&lt;/span&gt;&lt;span class="hl-default"&gt; = &lt;/span&gt;&lt;span class="hl-reserved"&gt;function&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;obj&lt;/span&gt;&lt;span class="hl-brackets"&gt;){ 
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;return new &lt;/span&gt;&lt;span class="hl-builtin"&gt;RegExp&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;(^|\,)&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-identifier"&gt;obj&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;(\,|$)&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;gi&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;test&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;this&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
&lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;
&lt;span class="hl-comment"&gt;// Проверяем
&lt;/span&gt;&lt;span class="hl-identifier"&gt;simplaArray&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;in_array&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;10&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-default"&gt;; &lt;/span&gt;&lt;span class="hl-comment"&gt;// true
&lt;/span&gt;&lt;span class="hl-identifier"&gt;simplaArray&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;in_array&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;11&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-default"&gt;; &lt;/span&gt;&lt;span class="hl-comment"&gt;// false
&lt;/span&gt;
&lt;span class="hl-comment"&gt;// Ещё можно использовать простую функцию ;)
&lt;/span&gt;&lt;span class="hl-reserved"&gt;function &lt;/span&gt;&lt;span class="hl-identifier"&gt;in_array&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;myValue&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-identifier"&gt;myArray&lt;/span&gt;&lt;span class="hl-brackets"&gt;){
    &lt;/span&gt;&lt;span class="hl-reserved"&gt;function &lt;/span&gt;&lt;span class="hl-identifier"&gt;equals&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;a&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-identifier"&gt;b&lt;/span&gt;&lt;span class="hl-brackets"&gt;){&lt;/span&gt;&lt;span class="hl-reserved"&gt;return &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;a&lt;/span&gt;&lt;span class="hl-code"&gt; === &lt;/span&gt;&lt;span class="hl-identifier"&gt;b&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
    &lt;/span&gt;&lt;span class="hl-reserved"&gt;for &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;i &lt;/span&gt;&lt;span class="hl-reserved"&gt;in &lt;/span&gt;&lt;span class="hl-identifier"&gt;myArray&lt;/span&gt;&lt;span class="hl-brackets"&gt;) &lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;equals&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;myArray&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-identifier"&gt;myValue&lt;/span&gt;&lt;span class="hl-brackets"&gt;) ) &lt;/span&gt;&lt;span class="hl-reserved"&gt;return true&lt;/span&gt;&lt;span class="hl-code"&gt;;
    &lt;/span&gt;&lt;span class="hl-reserved"&gt;return false&lt;/span&gt;&lt;span class="hl-code"&gt;;
&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
&lt;/span&gt;&lt;span class="hl-identifier"&gt;in_array&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;5&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-identifier"&gt;simplaArray&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-default"&gt;; &lt;/span&gt;&lt;span class="hl-comment"&gt;// true
&lt;/span&gt;&lt;span class="hl-identifier"&gt;in_array&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-number"&gt;69&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-identifier"&gt;simplaArray&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-default"&gt;; &lt;/span&gt;&lt;span class="hl-comment"&gt;// false
&lt;/span&gt;
&lt;span class="hl-comment"&gt;// А ещё, мы легко можем вывести весь массив в одну строку toSource
// и проверить текстом  через indexOf. Но это не красиво ;)
&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;,&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-identifier"&gt;simplaArray&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;toString&lt;/span&gt;&lt;span class="hl-brackets"&gt;()&lt;/span&gt;&lt;span class="hl-code"&gt;+&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;,&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;indexOf&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-string"&gt;,5,&lt;/span&gt;&lt;span class="hl-quotes"&gt;'&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-default"&gt;!==-&lt;/span&gt;&lt;span class="hl-number"&gt;1 &lt;/span&gt;&lt;span class="hl-comment"&gt;// true
&lt;/span&gt;
&lt;span class="hl-comment"&gt;//PS: каждому своё ;)&lt;/span&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;a href="http://deer.org.ua/2009/02/08/1/comments/"&gt;Комментарии&lt;/a&gt; к заметке&lt;br /&gt;&lt;br /&gt;Теги:&lt;br /&gt;&lt;a href="http://deer.org.ua/tags/php/"&gt;php&lt;/a&gt; &amp;gt; &lt;a href="http://deer.org.ua/tags/php/inarray/"&gt;in_array&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.deer.org.ua/tags/javascript/"&gt;javascript&lt;/a&gt;</description><pubDate>Sun, 08 Feb 2009 21:02:44 +0200</pubDate></item></channel></rss>