如何在javascript中对角遍历数组[关闭]

2023-12-19

我有一个包含字符串的数组,我想对角遍历它。
假设:

  • 每个字符串的长度相同。
  • 阵列可以是正方形或矩形、水平或垂直的。

矩阵如下所示:

A B C D
E F G H
I J K L

我想得到(从左上到右下):

A
EB
IFC
JGD
KH
L

以及(从左下角到右上角):

I
JE
KFA
LGB
HC
D

我已经有一段可以运行 3/4 的代码,但我似乎无法弄清楚我在做什么(错误的)。

//the array
var TheArray = ['ABCD','EFGH','IJKL'];

//amount of rows
var RowLength = TheArray.length;
//amount of colums
var ColumnLength = TheArray[0].length;

我的代码将对角线分成 4 个循环,以获得所有对角线。它看起来像 2 个 for 循环,其中一个 if 不循环未绑定的值。伪代码看起来有点像这样:

for(loop rows){
 var outputarray = [];
   for(loop columns){
      if(delimit for out of bound){
       var temprow = TheArray[something?];
       var tempvalue = temprow[something?];
       outputarray.push(tempvalue);
       }
   }
 //use values
document.getElementById("theDiv").innerHTML += outputarray.join("")+"<br>";
}

我希望有人能帮助我解决这个问题。


从左上到右下

var theArray = ["ABCD","EFGH","IJKL"];

var length = { "x" : theArray[0].length, "y" : theArray.length };
length.max = Math.max(length.x, length.y);

var temp, k, x, y;

for (k = 0; k <= 2 * (length.max - 1); ++k) {
    for (temp = [], y = length.y - 1; (x = k - y), y >= 0; --y) {
        x >= 0 && x < length.x && temp.push(theArray[y][x]);
    }
    temp.length > 0 && (document.body.innerHTML += temp.join('') + '<br>');
}

(也可以看看这个小提琴 https://jsfiddle.net/vu9tnjaL/)


从左下角到右上角

var theArray = ["ABCD","EFGH","IJKL"];

var length = { "x" : theArray[0].length, "y" : theArray.length };
length.max = Math.max(length.x, length.y);

var temp, k, x, y;

for (k = 0; k <= 2 * (length.max - 1); ++k) {
    for (temp = [], y = length.y - 1; (x = k + y - length.y), y >= 0; --y) {
        x >= 0 && x < length.x && temp.push(theArray[y][x]);
    }
    temp.length > 0 && (document.body.innerHTML += temp.join('') + '<br>');
}

(也可以看看这个小提琴 https://jsfiddle.net/thkboe4r/)


Combined

由于两者之间只有一行区别,因此您可以轻松地将它们组合在一个函数中:

var theArray = ["ABCD","EFGH","IJKL"];

function diagonal(data, fromBottom) {
    var length = { "x" : data[0].length, "y" : data.length };
    length.max = Math.max(length.x, length.y);

    var temp, k, x, y;

    var returnMe = [];

    for (k = 0; k <= 2 * (length.max - 1); ++k) {
        for (temp = [], y = length.y - 1; y >= 0; --y) {
            x = k - (fromBottom ? length.y - y : y);
            x >= 0 && x < length.x && temp.push(data[y][x]);
        }
        temp.length > 0 && returnMe.push(temp.join(''));
    }
    return returnMe;
}

document.body.innerHTML = diagonal(theArray).join('<br>') +
                          '<br><br><br>' +
                          diagonal(theArray, true).join('<br>');

(也可以看看这个小提琴 https://jsfiddle.net/6udtavnx/)

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

如何在javascript中对角遍历数组[关闭] 的相关文章

  • socket.io 的良好初学者教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么我的淘汰单选按钮在另一个具有点击绑定的元素内时会失败?

    我有一个单选按钮列表 我想要点击 li 他们还检查单选按钮 这一切都有效 直到我放了一个name单选元素上的属性 然后我的代码停止工作 我的代码如下所示 ul li li ul li
  • Javascript Promise“then”始终运行,即使 Promise 未能执行

    我希望当调用第二个 then 时不执行第三个 then 但是 即使 Promise 被拒绝 调用第二个 then 并且代码返回 rejected 然后返回 undefined 它仍然调用第三个 then 如何不运行第三个 then 这样 未
  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • 隐藏 Div 的父级

    我只是想隐藏父divcomments section div class content content green div div div 我试过这个 document getElementById comments section pa
  • Draggable JS Bootstrap 模式 - 性能问题

    对于工作中的项目 我们在 JavaScript 中使用 Bootstrap Modal 窗口 我们想让一些窗口可移动 但我们遇到了 JQuery 的性能问题 myModal draggable handle modal header Exa
  • Angular - CSS - 自定义类型=文件输入,如何使用按钮而不是标签?

    我制作了一个类型为 file 的自定义输入字段 因为我不喜欢默认的输入字段 为了实现这一目标 我做了
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • 日期出现奇怪的错误,“未捕获非法访问”

    所以我试图找到最新的DateJavascript 可以处理 我把它减少到 9 月 275760 并增加了我开始捕获未捕获的天数illegal access例外new Date 09 24 275760 to new Date 10 13 2
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换
  • 在 Javascript 中连接空数组

    我正在浏览一些代码 我想知道这有什么用处 grid push concat row 根据我的理解 它等同于 grid push row 为什么要大惊小怪 连接 你想使用 concat当您需要展平数组并且没有由其他数组组成的数组时 例如 va
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 从 FileReader 设置背景图像样式

    我正在寻找一种解决方案 允许我从文件上传输入中获取文件并通过设置 document body style backgroundImage 来预览它 以下代码用于在 Image 元素中显示预览 function setImage id tar
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接
  • 如何在react-highcharts中使用图表工具提示格式化程序?

    如何使用图表工具提示格式化程序 我正在使用高图表的反应包装器 我有这样的配置 const CHART CONFIG tooltip formatter tooltip gt var s b this x b each this points

随机推荐

  • 如何从订单详细信息页面删除产品链接? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在尝试禁用我的帐户页面中的订单详细信息表下的产品链接 我不希望用户点击产品并转到产品页面 只需使用以下非常简单的代码片段即可从订单详细信
  • 使用 PHP 快速将 (.rtf|.doc) 文件转换为 Markdown 语法

    我已经手动将文章转换为 Markdown 语法几天了 这变得相当乏味 其中一些长达 3 或 4 页 全文采用斜体和其他强调文本 有没有一种更快的方法可以将 rtf doc 文件转换为干净的 Markdown 语法 我可以利用 如果你碰巧使用
  • 在 C 编程中使用逻辑运算符比较多个字符串无法正常工作

    我在尝试着检查用户字符串是否输入 小写用户输入后 与所需的三个字符串匹配 i e rock or paper or scissor 如果不符合要求 系统将打印这是一个错误的输入 不然我就做点什么 当我只付出没有逻辑 的一项检查操作员 工作正
  • Python:解析带有嵌入图像的电子邮件

    我正在开发一个使用 python POP3 库连接到邮件服务器的应用程序 解析电子邮件并将它们放入数据库中 我已成功解析文本电子邮件 html 电子邮件和附件 现在 我被那些包含嵌入图像的电子邮件所困扰 服务器正在处理 CID src 标记
  • SPListItem.Properties 日期时间字段采用奇怪的十六进制格式

    有谁知道如何将这些字符串十六进制值转换回日期时间值 属性 my DateProperty System String 0x01c9874e 0x98f28800 l item is SPListItem Hashtable l proper
  • 为什么这是一个贪心算法?

    我的课本上有这样一个问题 假设我们有一组活动要在大型活动中安排 报告厅的数量 任何活动都可以在任何报告厅进行 我们希望利用尽可能少的报告厅来安排所有活动 给出一个有效的贪心算法来确定哪个活动应该使用哪个演讲厅 答案在这里给出 http mi
  • 如何正确使用NuGet进行团队开发?

    因此 我想使用 NuGet 来管理我和我的团队正在从事的特定项目所使用的各种项目 到目前为止 我已将 js 库文件放置在 Web 解决方案 ASP NET MVC 2 的 Scripts 目录中并引用了这些文件 当然 这是手动的 并且在升级
  • 从具有两种类型的对象的列表中获取 ComboBox 选定值,并且组合框仅显示其中一种

    我正在 Windows 窗体中构建 C 应用程序 我有一个车辆类和两个派生类汽车和摩托车 然后我将车辆保存到列表中 现在我有一个表格 我只想显示汽车或摩托车 在主窗体中 有一个按钮 显示汽车 和另一个按钮 显示摩托车 它们将告诉另一个窗体要
  • “内置方法 numpy.core._multiarray_umath.implement_array_function” 是性能瓶颈吗?

    我在用着numpy v1 18 2在一些模拟中 并使用内置函数 例如np unique np diff and np interp 我在标准对象 即列表或 numpy 数组 上使用这些函数 当我检查时cProfile 我看到这些函数调用了一
  • Eurekalog:将异常堆栈跟踪保存到日志文件中

    我使用的是delphi 7 我需要记录到文件任何的完整信息例外发生这种情况 通常我使用 Eurekalog 这个精彩的产品显示了一个包含所有堆栈跟踪信息和许多其他用于调试目的的对话框 我需要访问尤里卡日志给我的这些信息 实际上我只需要堆栈跟
  • 如何强制 Visual Studio 2013 中的项目始终以管理员身份运行?

    我在 Visual Studio 2013 中有一个 WPF 项目 该项目有两个按钮 第一个按钮表示 启动服务 第二个按钮表示 停止服务 当我以管理员身份运行 Visual Studio 时 这些按钮可以工作 但是 当我在没有权限的情况下打
  • 通过 wifi 从其他计算机访问私有虚拟机

    我有一个专用网络虚拟机用于在我的 Mac 上进行开发 我希望我的 Android 设备能够与我的 Mac 上的虚拟机进行通信 目前 我可以在我的 Mac 上访问我的 Vagrantfile 中定义的 IP 10 10 10 10 并且访问它
  • 有没有办法使用三元运算符 - 或类似的方法 - 来选择要分配的变量?

    是否可以根据条件改变我分配给的变量 我遇到的问题是想要这样做 bEquipAsSecondary currentWeaponOffhand currentWeaponMainhand weaponToSwitchTo 代替 if bEqui
  • node.js process.stdout.write 类型错误

    我正在开发一个简单的函数来在 node js 中创建基于控制台的提示 而无需使用一堆额外的库 function prompt text callback Text can be a question or statement use str
  • 如何克隆所选插件的选择元素

    我使用 jQuery 选择插件 在这里找到 http harvesthq github com chosen http harvesthq github com chosen 它添加了额外的功能来选择 HTML 元素 我想克隆一个包含 se
  • Python:请求无法登录网站

    我需要抓取需要登录的网站 我正在尝试创建一个session并登录 因为登录后我必须抓取不同的页面 但无法找出它不起作用的原因 import requests from bs4 import BeautifulSoup login data
  • 在 Excel 中使用 IF() 和 TIMEVALUE()

    我有以下公式 IF TIMEVALUE 14 30 TIMEVALUE NOW lt TIMEVALUE 00 00 Past Future Excel 给我错误 我单独检查了所有公式 它们都给了我时间值 理论上应该足以与 IF 语句进行比
  • 两台服务器之间的远程 rsync 管道损坏

    我正在尝试在 ubuntu 16 04 上使用 bash 将大型数据集 768 Gigs 从一台远程计算机传输到另一台远程计算机 我遇到的问题是 我使用 rsync 机器将传输几个小时 然后在连接不可避免地中断时退出 假设我在机器 A 上
  • s3 预签名 url 多部分表单数据上传错误:签名不匹配

    我从 aws 获取一个预签名的 url 并使用它来请求 PUT 一个 zip 文件 我得到签名不匹配 获取预签名 url 时 const params Bucket myBucket Key myKey Expires 60 60 ACL
  • 如何在javascript中对角遍历数组[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个包含字符串的数组 我想对角遍历它 假设 每个字符串的长度相同 阵列可以是正方形或矩形 水平或垂直的 矩阵如下所示