问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

javascript 二维数组

发布网友 发布时间:2022-04-21 05:28

我来回答

2个回答

懂视网 时间:2022-05-14 17:28

本篇文章给大家带来的内容是关于JavaScript中二维数组的查找(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

基本思路

二维数组是有序的,比如下面的数据:

1 2 3
4 5 6
7 8 9

可以直接利用左下角数字开始查找:

大于:比较上移

小于:比较右移

代码思路

将二维数组看作平面坐标系

从左下角(0,arr.length-1)开始比较:

目标值大于坐标值---x坐标+1

目标值小于坐标值---y坐标-1

注意:

二维数组arri中

j代表x坐标

i代表y坐标

代码

 function Find(target, array) {
 let i = array.length - 1; // y坐标
 let j = 0; // x坐标
 return compare(target, array, i, j);
 }

 function compare(target, array, i, j) {
 if (array[i] === undefined || array[i][j] === undefined) {
 return false;
 }
 const temp = array[i][j];
 if (target === temp) {
 return true;
 }
 else if (target > temp) {
 return compare(target, array, i, j+1);
 }
 else if (target < temp) {
 return compare(target, array, i-1, j);
 }
 }

拓展:二分查找

二分查找的条件是必须有序。

和线性表的中点值进行比较,如果小就继续在小的序列中查找,如此递归直到找到相同的值。

 function binarySearch(data, arr, start, end) {
 if (start > end) {
  return -1;
 }
 var mid = Math.floor((end + start) / 2);
 if (data == arr[mid]) {
  return mid;
 } else if (data < arr[mid]) {
  return binarySearch(data, arr, start, mid - 1);
 } else {
  return binarySearch(data, arr, mid + 1, end);
 }
 }

热心网友 时间:2022-05-14 14:36

我觉得你这里应该是错误的用法,应该是:

Array.apply(null,new Array(+num))

这样的吧,是不是少了 new ?


javascript 的函数有两个告别的方法 call 和 apply,这两个方法的作用都是把函数里的 this 指针绑定到这两个方法的第一个参数指定的对象(也就是相当于这个对象临时多出了这个函数作为方法),而区别是 call 是把除了第一个参数外的所有参数依次传递给函数,而 apply 是把第二个参数的数组元素依次传递给函数,所以 apply 的第两个参数指能为数组(当然也可能不传)

function A(a, b){
    this.x = [a, b]
}

function B(e, f){
    this.X = [e, f]
}

A.prototype.B = B;

var a = new A(1, 2), b = {};

a.B(3, 4);
A.call(b, 1, 2);
B.apply(b, [3, 4]);

// 最后 a.x 和 b.x, a.X 和 b.X 都是一样的(本来 b 是没有 A 构造, B 方法的)

这里就可以知道 B.apply 这里的作用了吧
根据以上分析,我觉得你这个代码有点多余

目的应该是要生成一个 num 大小的值都为 value 的数组,完全可以这样:

return (new Array(num)).map(function(d,i){return value})

 测试了下,你的代码正常,我的这个代码不能用,无法理解,不就是 Array 的 map 方法么,为什么我这样不对呢。。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
遇到碰瓷怎么办 导致碰瓷者伤亡用负法律责 最新电子防盗装置 3个LED的小夜灯电路 买不到小功率3伏变压器,如何降压做个3伏70毫安电源 小夜灯按钮坏了怎么拆 哪里有各种定做手提袋 如图,我这个配置玩逆战为何会卡?pvp200左右,pve75左右,ping二三十,网... 女孩问你是的时候怎么回答 自习课 同学都睡着了 男同桌问我让我跟他比赛 比谁撒尿尿得远 问他... 想把一个女同学上了,又不想负责任,毕竟她对我没意思,我对她也没意思... 有一个晚上,女同学叫我一起玩,玩着玩着到了半夜,回自己的宿舍太远就... js 数组 对象为空或不是对象 JS中的二维数组 PHP怎么删除二维数组的空数组 JS怎么查询删除二维数组里的一维数组[{1,2},{3,4},{5,6},{7,8},{9,10}] [2, 8] javascript处理二维数组 jS 如何删除二维数组的重复项 如何用pdf插件拼版并加上角线 PDF中怎么骑马订拼版? 有跨页的pdf中怎么拼版 pdf怎么拼版打印 你好,怎么用PDF批量拼版以后双面打印一样的内容? 用Indesign排完版后导出PDF交印刷厂,听别人还得什么拼版,怎么拼?是我拼好了交印刷厂还是怎么一回事? 404 Not Found PDF怎么拼图打印 PDF拼大版印刷 PDF 文件怎么在PDF里拼版,PDF怎么操作??? PDF如何拼版正反打印 PDF拼版问题 用来度量cpu时钟主频的度量单位是什么 PDF拼版如何简单操作 JS中定义二维数组的问题 vue中用js遍历出来了二维数组中的每一项删除其中的某一个元素后如何再还原遍历之前的状态 js二维数组的问题 js里面二维数组如何实现? JS中二维数组的怎么每个拿出一项来呢? js 把二维数组中指定元素提出,与其余元素组成新的数组 js对二维数组的操作,然后输出 JavaScript 如何定义一个二维数组 javascript 二维数组 is undefined javascript不支持二维数组怎么解决 用GHz来衡量计算机性能,它是指计算机的 什么??? 无花果煲汤大全及做法介绍 无花果做汤怎么做 无花果和什么一起煲汤好? 无花果瘦肉汤做法 无花果瘦肉汤的做法 无花果汤的做法与功效 无花果炖什么汤最好 无花果炖瘦肉汤做法 无花果炖瘦肉汤的做法