<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JS: Правильная проверка существования значения массива]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=8424</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8424&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «JS: Правильная проверка существования значения массива».]]></description>
		<lastBuildDate>Tue, 25 Jun 2013 08:15:49 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: JS: Правильная проверка существования значения массива]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73285#p73285</link>
			<description><![CDATA[<p>Знакомый алгоритм. Посмотрел у себя - сам похожее писал тоже. Но не помню уже с какой целью - возможно прицепом с чем-то еще. Отличие - создает все объекты в глобальной области видимости. Надо бы переписать для любых случаев. </p><div class="codebox"><pre><code>
(function(that)
{
    Object.ns = function(namespace, value)
    {
        var parts = namespace.split(&#039;.&#039;);
        var name = parts.pop();
        var len = parts.length;

        var root = that;

        for (var i = 0; i &lt; len; i++) {
            var p = parts[i];
            root = root[p] = root[p] || {};
        }

        return root[name] = value;
    };

})(this);
</code></pre></div><p>Пример использования:<br /></p><div class="codebox"><pre><code>
Object.ns(&#039;a.b.c.d&#039;, Math.PI);
Object.ns(&#039;a.x.y.z&#039;, Math.PI);

/*
// The code above creates this structure
var a = {
    b: {
        c: {
            d: Math.PI
        }
    }, 
    x: {
        y: {
            z: Math.PI
        }
    }
};
*/
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Tue, 25 Jun 2013 08:15:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73285#p73285</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Правильная проверка существования значения массива]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73284#p73284</link>
			<description><![CDATA[<p>Конечный результат:<br /></p><div class="codebox"><pre><code>function f (o, s) {
    s = s.split(&#039;.&#039;);
    for (i = 0; i &lt; s.length; i++) {
            o = o[s[i]] || &quot;&quot;;
        }
    return o
}
d = f (o, &quot;value.origin.title&quot;);
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (DnsIs)]]></author>
			<pubDate>Tue, 25 Jun 2013 08:04:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73284#p73284</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Правильная проверка существования значения массива]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73283#p73283</link>
			<description><![CDATA[<p>Нашел решение</p><div class="codebox"><pre><code>d = (o.value &amp;&amp; o.value.origin &amp;&amp; o.valuee.origin.title) || &quot;Пусто&quot;</code></pre></div><p>Которое позже трансформировалось в</p><div class="codebox"><pre><code>d = ((s1 = o.value) &amp;&amp; (s2 = s1.origin) &amp;&amp; (s2.title)) || &quot;Пусто&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (DnsIs)]]></author>
			<pubDate>Tue, 25 Jun 2013 05:34:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73283#p73283</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Правильная проверка существования значения массива]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73263#p73263</link>
			<description><![CDATA[<p>И &quot;for in&quot; и &quot;try catch&quot; пробовал, но хотелось что бы был более простой метод.</p><p>Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (DnsIs)]]></author>
			<pubDate>Mon, 24 Jun 2013 13:33:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73263#p73263</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Правильная проверка существования значения массива]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73260#p73260</link>
			<description><![CDATA[<p>Можно. Но через исключение больше похоже смахивает на хак.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Mon, 24 Jun 2013 12:28:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73260#p73260</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Правильная проверка существования значения массива]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73259#p73259</link>
			<description><![CDATA[<p>Если понял, что надо:<br /></p><div class="codebox"><pre><code>try {
    d = o.value.origin.title;
} catch (error) {
    d = &quot;no&quot;;
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Mon, 24 Jun 2013 12:24:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73259#p73259</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Правильная проверка существования значения массива]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73258#p73258</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Как правильно проверить, без длинной городьбы?</p></blockquote></div><p>Не получится. Надо каждый раз проверять наличие родительского свойства в цепочке &quot;a.b.c.d&quot;. </p><p>Можно пройтись циклом &quot;for in&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Mon, 24 Jun 2013 12:24:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73258#p73258</guid>
		</item>
		<item>
			<title><![CDATA[JS: Правильная проверка существования значения массива]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73255#p73255</link>
			<description><![CDATA[<p>Доброго утра.<br /></p><div class="codebox"><pre><code>o = {
    &quot;value&quot;: {
        &quot;origin&quot;: {
            &quot;title&quot;: &quot;Ух ты&quot;,
            &quot;htmlUrl&quot;: &quot;http://xxx.ru&quot;,
        }
    }
}
</code></pre></div><p>Проверки типа того <br /></p><div class="codebox"><pre><code>d = o.value.body.title ? o.value.body.title : &quot;oh my god&quot;
d = o.value.body.title || &quot;oh my god&quot;</code></pre></div><p>Не работают. Пока вижу только такой вариант:<br /></p><div class="codebox"><pre><code>d = o.value.origin ? o.value.origin.title ? o.value.origin.title : &quot;no&quot; : &quot;no&quot;;</code></pre></div><p>Но при большой вложенности получится очень некрасиво.<br />Как правильно проверить, без длинной городьбы?</p><p>Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (DnsIs)]]></author>
			<pubDate>Mon, 24 Jun 2013 10:29:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73255#p73255</guid>
		</item>
	</channel>
</rss>
