Javascript无限嵌套数组处理

2023-12-06

我正在尝试和我的朋友一起玩,他解决了8m 7s中提到的问题,对我来说已经20m了。我不知道如何处理 JavaScript 中的无限嵌套数组。

问题是这样的:

// i will be an array, containing integers, strings and/or arrays like itself.
// Sum all the integers you find, anywhere in the nest of arrays.

So

arraySum([[1,2,false],'4','5']) will return 3 (passed)
arraySum([[1,2,3],4,5]) will return 15 (passed)
arraySum([[[[[[[[[1]]]]]]]], 1]) will return 2 (failed)

我写的代码是:

function arraySum(i) {

sum = 0;
tmp =0;
for (var a=0; a<i.length; a++){
    if (i[a] instanceof Array) {
        ar = i[a];
        for (var j=0; j<ar.length; j++){
            tmp +=ar[j];
        }
    }
    if (typeof i[a] == "number")
        sum += i[a];
        console.log(sum);
}
return sum + tmp;

}

正如你所看到的,它不能处理我失败的最后一种情况,因为我不知道如何处理 JS 中的无限嵌套。

任何想法将不胜感激。 也尽量在 8 米 7 秒之前完成,我的朋友也完成了。


里面的if (i[a] instanceof Array) {部分,您必须使用递归来操作具有相同的嵌套数组arraySum函数,而不仅仅是使用另一个循环。尝试这个:

var arraySum = (function () {
    "use strict";

    var sumFunc, isArray;

    sumFunc = function (arr) {
        var sum, i, j, cur, toAdd;

        sum = 0;

        for (i = 0, j = arr.length; i < j; i++) {
            cur = arr[i];

            toAdd = 0;
            if (isArray(cur)) {
                toAdd = sumFunc(cur);
            } else if (typeof cur === "number") {
                toAdd = cur;
            }

            sum += toAdd;
        }

        return sum;
    };

    isArray = Array.isArray || function (obj) {
        return Object.prototype.toString.call(obj) === "[object Array]";
    };

    return sumFunc;
}());

DEMO: http://jsfiddle.net/Q7JPM/1

该函数只是循环遍历数组中的所有项目,并返回其中找到的所有数字的总和。如果该项目本身是一个数组,它会调用arraySum并传递该数组...将结果添加到总和中。如果它是一个数字,它只是将其添加到总和中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript无限嵌套数组处理 的相关文章

  • 如何在没有 jQuery 的情况下删除 Javascript 中的元素

    我试图通过以下方式从 DOM 中删除 Div a 标签嵌套在其中 我想我正在寻找的是 jQuery 的纯 Javascript 版本 div remove 这是html设置 div a href Click me to remove the
  • 使用 Angular 指令禁用文本选择

    我正在学习 JavaScript 和 AngularJS 我想使用 Angular Directive 禁用文本选择 我有该函数的 JavaScript 代码 function clearSelection if document sele
  • 通过 JavaScript 获取表单名称

    我有一个简单的问题 但我在网上找不到好的解决方案 我有这个 HTML 代码
  • 如何使用javascript确保元素仅在圆上朝一个方向移动?

    好吧 我承认我对三角学真的很糟糕 出于上下文的考虑 我将添加我在这里提到的问题中的内容 参考问题 https stackoverflow com a 39429290 168492 https stackoverflow com a 394
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 为什么 setTimeout 在 Chrome 中触发两次,而在 IE 或 Firefox 中则不然?

    有人能告诉我为什么 javascript 函数 生成新号码 在 Chrome 中触发两次 但在 IE 或 Firefox 中则不会 使用 Chrome 20 0 1132 57 IE9 和 Firefox 13
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法
  • 计算三次贝塞尔曲线的弧长、曲线长度。为什么不工作?

    我正在用这个算法计算弧长 三次贝塞尔曲线的长度 function getArcLength path var STEPS 1000 gt precision var t 1 STEPS var aX 0 var aY 0 var bX 0
  • 求先递增后递减列表的最大值和最小值

    我尝试用谷歌搜索这个问题 但没有取得太大成功 我确信这个问题或类似问题有一个技术名称 但我似乎找不到答案 给定一个列表L整数 即严格递增 然后严格递减 找到该列表的最大值和最小值 例如 L可能 1 2 3 4 5 4 3 2 or 2 4
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐

  • 是否有 CheckStyle 规则强制 if else 关键字位于 if/else 梯形图中的同一行?

    基于这个问题看来 CheckStyle 的默认模板将允许 if else 梯子将if and else有换行符 意思是我愿意this被标记为违规的代码 if true System out println 20 else if true S
  • 按字体计算 Microsoft Word 文档中的字数?

    我有一个包含代码示例的大型文档 我想知道字体 Calibri Body 中所有文本的字数 无论大小如何 我想忽略 Consolas 等 我有一个按斜体计数的宏 作为示例发布 但无法运行它 Sub IgnoreItalics Dim lngW
  • R Shiny 观察事件问题

    当在数据表中选择行并且有人按下 删除行 开关时 我试图从数据框中删除行 input click rows selected 给出所选行的 id 我使用observeEvent和observe似乎有问题 因为代码在我第一次轻按开关时删除了选定
  • Facebook 分享/评论无法正常工作

    在我的页面中 我添加了 Facebook 评论和分享按钮 一切都是按照他们的指示完成的 所以 我已经包含了加载脚本 div div
  • Facelets:使用 ui:param 将 bean 名称传递给操作属性

    由于某些自定义组件在其属性中需要 bean 名称 而不是 bean 实例 因此我需要在页面之间传递实际的 bean 名称 由于 bean 本身也被非自定义组件使用 我想避免使用额外的ui param 就像这里描述的那样在 中传递操作 因为它
  • 奇怪 - mysql 的 sql::SQLException 没有被它的类型捕获,而是被捕获为 std::exception 并成功地返回

    我正在使用 mysql c 连接器和这个 有点简化的 代码 try statement gt setString 1 word statement gt executeUpdate catch sql SQLException e I do
  • 如何以delphi形式使用Gif动画

    我认为 gif 动画图像没有原生支持 怎样才是最好的方法呢 任何允许这样做的免费组件 我正在考虑使用 TImage 和 ImageList Timer 但我需要将 gif 的每一帧导出到单独的 bmp 文件 在现代 Delphi 中这非常简
  • 使用 JSON 填充图表时 Google 图表中的工具提示

    我目前正在使用 JSON 填充我的 Google 图表 但我还需要自定义工具提示 目前我的 JSON 如下所示 cols id label date type string id label price type number rows c
  • python / scikit-learn 中距离计算的稀疏实现

    我有一个 svmlight 格式的大型 100K x 30K 且 非常 稀疏的数据集 加载如下 import numpy as np from scipy cluster vq import kmeans2 from scipy spati
  • 在 Ubuntu 上找不到 Java 应用程序主类

    我正在使用 Gradle 应用程序插件来分发适用于 Windows 和 Ubuntu Linux Mac 等的 Java 应用程序 几周前我在 Linux 上对此进行了测试 效果非常好 今天 在我的 Linux 机器上找不到我的 Main
  • Python 找不到 System32

    我想打开我创建的一个exe 它位于Windows的System32文件夹中 我通过以下命令执行此操作 subprocess call C Windows System32 ListTest exe 但不知何故Python找不到System3
  • java守护线程

    大家好 当封闭的线程完成时 守护线程会停止工作吗 或者当 主 线程完成时守护线程将停止 我在 jre6 上测试了这个例子 结果是daemon thread stopped working when the enclosing it thre
  • 如何使单击事件适用于具有同一类的多个元素?

    我试图在每次用户单击多个图块时实现翻转效果 这有点像仪表板类型网页的开始 如何使点击事件适用于多个同名类 所有图块都具有相同的类名 但在不同的 box div 下 jquery 单击事件似乎仅在添加的最后一个图块中实现 而其他图块保持静态
  • Bash 将带引号的行分割成参数

    希望这个问题以前没有出现过 至少我没有找到答案 也许看起来不太好 假设我收到了这段文字 hello hello hello world 请告诉我为什么这两个脚本有不同的输出 1 文本保存在文件中 bin bash while read li
  • 我需要回答有关 setTimeout 的问题

    所以我们都知道 setTimeout 在执行某些操作之前会等待一定的时间 我的问题是 它是否先等待上面的代码完成执行 然后再等待一秒钟执行其他操作 或者只是等待一秒钟 无论上面的代码是否已完成执行 它都会执行其余的代码无论如何 代码 if
  • 具有多个外键的 Django 内联表单

    我正在尝试在我的模板中使用 Django 的 ModelForm 和内联表单 但是 我找不到任何文档可以整齐地映射到具有多个外键的数据库模型回到同一个表 这些是我的模型 models py class Universities models
  • 使用 ADO 和 win32com 获取 SQL Server 消息

    我目前正在尝试编写一个工具 使不懂计算机的用户可以轻松备份 SQL Server 数据库 为此 我希望使用 ADO win32com 和 adodbapi 的有趣组合 目前我可以轻松连接到服务器并发出BACKUP DATABASET SQL
  • 无法使用密钥、证书和 CA 为 Tomcat 创建密钥库 证书链长度:1

    我无法获得从 RapidSSL 购买的证书 该证书在 Tomcat 上运行 但在 Apache 上运行 RapidSSL 要求您安装 2 个中间 ca 文件 当我从私钥 证书和中间 CA s 创建密钥库时 我可以看到 Entry type
  • 如何在 Zend Framework 中添加更新查询限制?

    我如何添加LIMIT 1使用 Zend Framework 时更新的子句 我有点被迫不使用Zend Db Table Abstract update 因为它会自行执行 与甜蜜不同Zend Db Select 课程 这样做的原因只是预防措施
  • Javascript无限嵌套数组处理

    我正在尝试和我的朋友一起玩 他解决了8m 7s中提到的问题 对我来说已经20m了 我不知道如何处理 JavaScript 中的无限嵌套数组 问题是这样的 i will be an array containing integers stri