{"id":27997,"date":"2022-12-27T23:46:06","date_gmt":"2022-12-27T18:16:06","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/"},"modified":"2022-12-27T23:46:06","modified_gmt":"2022-12-27T18:16:06","slug":"solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/","title":{"rendered":"[Solved] How to rewrite the following function so it doesn&#8217;t use for loops?"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-37297146\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"37297146\" data-parentid=\"37292036\" data-score=\"1\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>I&#8217;m not 100% sure what you expect the code to do, because your existing code and your description differ.<\/p>\n<p>Your description is, rephrased, that this function checks whether <code>object.web<\/code> or any <code>object.XXX.web<\/code> are undefined. Your code however assumes that all members are arrays and checks whether <code>object.web<\/code> or <code>object.XXX[YYY].web<\/code> are undefined. (Note that it also doesn&#8217;t do it correctly and accesses <code>.length<\/code> even though the member in question might be undefined.)<\/p>\n<p>Since I&#8217;m not sure which of those is right, I&#8217;m providing two answers.<\/p>\n<p><strong>Functionality as per your textual description:<\/strong><\/p>\n<pre><code>function hasNoCategories(object) {\n    if(!object.web) return false;\n    return Object.keys(object).every(function(key) {\n        if(typeof object[key] !== 'object') return true;\n        return !!object[key].web;\n    });\n}\n<\/code><\/pre>\n<p><strong>Functionality as per your existing code:<\/strong> (but with the <code>length<\/code> property access fixed)<\/p>\n<pre><code>function hasNoCategories(object) {\n    if(!object.web) return false;\n    return Object.keys(object).every(function(key) {\n        if(!Array.isArray(object[key])) return true;\n        return object[key].every(function(el) {\n            if(typeof object[key] !== 'object') return true;\n            return !!el.web;\n        });\n    });\n}\n<\/code><\/pre>\n<p>To understand how this works, check out the documentation on <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/keys\"><code>Object.keys<\/code><\/a> (which returns an array with the names of all keys in your object) and <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/every\"><code>Array.prototype.every<\/code><\/a> (which runs a callback function for every element in an array and returns true only if the callback returned true for every element).<\/p>\n<p>Note that I&#8217;m assuming that your &#8220;empty or undefined&#8221; should reject all kinds of falsy values including <code>null<\/code> and the number (not string) zero. If not, then all the checks like <code>if(!something)<\/code> and <code>return !!something<\/code> would need to be changed to <code>if(typeof something === \"undefined\" || something === '')<\/code> and <code>return typeof something !== \"undefined\" &amp;&amp; something !== ''<\/code>, respectively.<\/p>\n<p>Side note to prevent nitpicking: Of course there are still loops going on. But it was specifically asked &#8220;without <code>for<\/code> loop&#8221; and there is no <code>for<\/code> in this code.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">2<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved How to rewrite the following function so it doesn&#8217;t use for loops? <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] I&#8217;m not 100% sure what you expect the code to do, because your existing code and your description differ. Your description is, rephrased, that this function checks whether object.web or any object.XXX.web are undefined. Your code however assumes that all members are arrays and checks whether object.web or object.XXX[YYY].web are undefined. (Note that it &#8230; <a title=\"[Solved] How to rewrite the following function so it doesn&#8217;t use for loops?\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/\" aria-label=\"More on [Solved] How to rewrite the following function so it doesn&#8217;t use for loops?\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[333],"class_list":["post-27997","post","type-post","status-publish","format-standard","hentry","category-solved","tag-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>[Solved] How to rewrite the following function so it doesn&#039;t use for loops? - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] How to rewrite the following function so it doesn&#039;t use for loops? - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] I&#8217;m not 100% sure what you expect the code to do, because your existing code and your description differ. Your description is, rephrased, that this function checks whether object.web or any object.XXX.web are undefined. Your code however assumes that all members are arrays and checks whether object.web or object.XXX[YYY].web are undefined. (Note that it ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-27T18:16:06+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\\\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] How to rewrite the following function so it doesn&#8217;t use for loops?\",\"datePublished\":\"2022-12-27T18:16:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\\\/\"},\"wordCount\":244,\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"keywords\":[\"javascript\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\\\/\",\"name\":\"[Solved] How to rewrite the following function so it doesn't use for loops? - JassWeb\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\"},\"datePublished\":\"2022-12-27T18:16:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] How to rewrite the following function so it doesn&#8217;t use for loops?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\\\/\\\/jassweb.com\"],\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/author\\\/jaspritsinghghumangmail-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] How to rewrite the following function so it doesn't use for loops? - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] How to rewrite the following function so it doesn't use for loops? - JassWeb","og_description":"[ad_1] I&#8217;m not 100% sure what you expect the code to do, because your existing code and your description differ. Your description is, rephrased, that this function checks whether object.web or any object.XXX.web are undefined. Your code however assumes that all members are arrays and checks whether object.web or object.XXX[YYY].web are undefined. (Note that it ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/","og_site_name":"JassWeb","article_published_time":"2022-12-27T18:16:06+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] How to rewrite the following function so it doesn&#8217;t use for loops?","datePublished":"2022-12-27T18:16:06+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/"},"wordCount":244,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["javascript"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/","url":"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/","name":"[Solved] How to rewrite the following function so it doesn't use for loops? - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-12-27T18:16:06+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-rewrite-the-following-function-so-it-doesnt-use-for-loops\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] How to rewrite the following function so it doesn&#8217;t use for loops?"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/27997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=27997"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/27997\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=27997"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=27997"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=27997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}