二维数组(扩展hash数组)以及json,严格模式,字符串的常用api

二维数组

数组中的每一个元素也是数组

?var arr=[    [1,2,3],    [4,5,6],    [7,8,9],    [1,2,3,4,5,6,7]    ...];

怎么遍历二维数组

            var arr=[                [1,2,3],                [4,5,6,7],                [10,20,30,40,60,80]            ];            for(var r=0;r<arr.length;r++){

                for(var c=0;c<arr[r].length;c++){                    console.log(arr[r][c]);                }            }

怎么访问二维数组中的元素

arr[r][c]思考问题    var arr=[        [1,2,3],        [5,6],        [7]    ];    arr[0][5]  //undefined    arr[5][1] //报错二维数组:列下标 可以超出 行下标不可以?var obj={    name:"小明"}var a="name";obj[a]??

访问一个对象的属性;如何这个属性的值是一个变量 obj[变量名] 赋值也是一样 obj[变量名]=值

hash数组(关联数组)

普通数组下标:0123456789概念:自定义下标的数组声明:    var hashArr = [];    hashArr[‘a‘]=‘tom‘;    hashArr[‘b‘]=‘jerry‘;    hashArr[‘c‘]=‘tony‘;使用:    hashArr[‘a‘]对象其实就是关联数组?对象的严格写法:属性名必须加 "" 双引号,对象的属性名方法名其实是字符串注意:    关联数组的length属性是无效的

json

js对象表示法  json 不是js语法,语言通用(模仿js对象的写法 储存数据格式)数据格式 用于传输数据的(前后台)json是js对象的严格语法:    键和值得一一对应关系    属性名(键)是需要加 ""var json={    "name":"小明",    "age":18,    "gender":"男"}

数组分类

number 数组 数组存的就是数字string数组 存储是字符串混合数组:存储多个数据类型的值json数组  后台传前台的数据就是json数组[    {        "itemName":"小米9",        "itemPrice":2339,        ...    },    {        "itemName":"小米9",        "itemPrice":2339,        ...    },    {        "itemName":"小米9",        "itemPrice":2339,        ...    }

]

for in循环 增强for循环

for(var key in arr){    key就是下标    arr[key]}

严格模式

  • "use strict"

    • 消除代码运行的一些不安全之处,保证代码运行的安全;
    • 提高编译器效率,增加运行速度;
  • 全局变量声明时 必须加var
    "use strict"; x = 3.14;
  • this 无法指向全局对象
    this函数内部关键字默认指向全局对象window?window对象下的属性和方法就是全局的function f(){     "use strict";    return !this;} // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。
  • 不允许变量重名:
    "use strict";function x(p1, p1) {};   // 报错

window

js内置的对象

是最大一个对象,全局的对象,window下面的属性和方法就是全局的属性和方法,可以直接使用可以在任意位置使用

window下的属性和方法,在使用时,可以省略window

var a=10; 给window增加一个a属性

this关键字

这个,指向 所在的代码中环境的指向

在全局环境下:指向window

在函数中:

01,事件函数

this指向事件源

02,普通函数

this指向window

在严格是下

es5新增数组相关api

indexOf(data[,starti]) 查找关键字

第一个参数:需要查找的关键字

第二个参数:从哪里开始查找,默认是开始位置查找

顺序从前往后

不能全局查找,遇到第一个复合条件的元素就立即返回

?var arr=[1,2,3,4,5,7,8,98,9,0,0,‘tmd‘,0,7];

lastIndexOf(data)

找到了返回结果所在的下标,找不到返回-1

顺序:从后往前找

不能全局查找,遇到第一个复合条件的元素就立即返回

forEach()循环

arr.forEach(function(item,index,arr){    //item每一次遍历的数组的元素    //index是下标   arr是数组本身});

forEach能否取代普通for循环

遍历过程中,因为某些条件要终止循环var arr=[1,2,0,4,8,32,5,35,6];for(var i=0;i<arr.length;i++){    if(arr[i]==0){        break;    }}

map() 遍历当前数组,返回新数组

            var arr=[1,2,3,4,5];            //[2,4,6,8,10]            var newArr = arr.map(function(item,index){                return item+2;            });            console.log(newArr);

filter 过滤 得到符合条件新数组

var newArr = arr.filter(function(item,index){    return 条件;});

every() 条件判断,判断数组中的“每”!!!一个元素是不是都满足某个条件,如果都满足返回true,否则返回false

var bool =arr.every(function(item,index){    return 条件});

some()条件判断,判断数组中的“某”!!!一个元素是不是都满足某个条件,如果都满足返回true,否则返回false

var bool =arr.every(function(item,index){    return 条件});

字符串

字符串的两种创建方式(常量和构造函数)

(字符串不是对象,按常理不会有属性和方法,但是字符串是引用js 的封装的,其他,所以就可以用)

  • var str="亲"
  • var str = new String(“hello”) (不太常用)
  1. ASCII码和字符集

    https://blog.csdn.net/Deft_MKJing/article/details/79460485

  • ASCII(American Standard Code for Information Interchange:美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的系统,并等同于国际标准ISO/IEC 646
  • Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。
  • utf-8 可变大小字符集

字符串的比较 比较unicode编码大小 (首字符)

字符串常用api

怎么理解:只读的数组 数组中所有的api只要是只读,字符串都可以使用

length 返回字符串长度也可以通过下标获取某个字符  str[下标]concat()  一般字符串不会用 +就是连接slice()  

charAt(下标) 获取对应下标字符 str[下标]

charCodeAt(下标) 获取字符串的unicode编码

String.fromCharCode() 可以接受一个unicode编码 返回这个字符串

大小写转换:

转大写:

str.toUpperCase()

转小写

str.toLowerCase()

indexOf("字符"[,位置]) 用法跟数组indexOf一样

lastIndexOf() 用法同数组lastIndexOf()

截取子字符串

substring(starti[,endi+1])

substr(starti[,n])

n:截取几个

字符串切割为数组

var arr = str.split(seperator);

分隔符:以什么进行分割

注意:

  1. 如果参数不传,默认是将整个字符放到数组中,数组只要一个元素,字符串
  2. 参数是 ""空字符串 将字符串的每一个字符都切割作为数字的一个元素
?var str = "hello world";?

原文地址:https://www.cnblogs.com/cxf1214/p/11391817.html

时间: 2024-08-10 17:01:02

二维数组(扩展hash数组)以及json,严格模式,字符串的常用api的相关文章

hdu1081 DP类最长子段和(二维压缩+前缀和数组/树状数组计数)

题意:给出一个 n * n 的数字矩阵,问最大子矩阵和是多少. 由于和最长子段和问题类似,一开始想到的就是 DP ,一开始我准备用两个循环进行 DP ,对于每一个 (i,j) ,考察(i - 1,j)与(i,j - 1), dp 值代表以该点为右下角的最大矩阵和,同时记录下这个矩阵的左上角坐标,状态转移时通过将原和最大矩阵通过补边推到当前和最大矩阵.但是其实这种做法有一个明显的问题,就是转移时,补上边后 dp 值相同怎么办,dp 值相同而矩阵不同的话会影响到下一次状态转移后补上的矩阵的情况,从而

二维最大和子数组

1.设计思路 因为计算了一位的最大和子数组,所以想办法将二维的数组转换成一维子数组进行求解: 首先,将二维数组的第一行(列)赋值到新的一维数组中,在一维的数组中求得子数组的最大值, 然后,将二维数组的第二行(列)加到一维数组中,再次求得子数组的最大值,并和第一步求得的最大值进行比较,若新的值比较大,留下最大值,如果新值比较小,退出这一个循环,从第二行(列)开始第一步,这样就可以求出最大和子数组: 2.源代码 #include<iostream> #include<ctime> us

$[SHOI2007]$ 园丁的烦恼 二维数点/树状数组

\(Sol\) 设一个矩阵的左上角为\((x_1,y_1)\),右下角为\((x_2,y_2)\),\(s_{x,y}\)是到\((1,1)\)二维前缀和,那么这个矩阵的答案显然是\(s_{x_2,y_2}-s_{x_1-1,y_2}-s_{x_2,y_1-1}+s_{x_1-1,x_2-1}\).考虑把每个询问拆成这么四个二维前缀和的询问.将所有询问的\(s_{x,y}\)按照\(x\)排序,依次计算,这样我们就可以忽略\(x\)的限制而只考虑\(y\)的限制了.每次扫到一个询问,先把\(x\

Yii 安装二维码扩展Qrcode

比如要添加 https://github.com/2amigos/yii2-qrcode-helper 生成二维码的 这个扩展第一种方法 :    1.打开根目录的composer.json, 在require那里加上 "2amigos/yii2-qrcode-helper" : "~1.0",如图    "require": { "php": ">=5.4.0",     "yiisoft

thinkphp3.2二维码扩展

//简易二维码 public function qrcode(){ Vendor('phpqrcode.phpqrcode'); //生成二维码图片 $object = new \QRcode(); $url='http://www.shouce.ren/';//网址或者是文本内容 $level=3; $size=4; $errorCorrectionLevel =intval($level) ;//容错级别 $matrixPointSize = intval($size);//生成图片大小 $

【BZOJ】1047: [HAOI2007]理想的正方形(单调队列/~二维rmq+树状数组套树状数组)

http://www.lydsy.com/JudgeOnline/problem.php?id=1047 树状数组套树状数组真心没用QAQ....首先它不能修改..而不修改的可以用单调队列做掉,而且更快,只有O(n^2).而这货是n^2log^2n的建树...虽然查询是log^2n...但是建树那里就tle了.. 那么说题解... 先orz下,好神.. 我怎么没想到单调队列orz 首先我们维护 行 的单调队列,更新每个点在 列 距离内的最小and最大的值 然后我们维护 列 的单调队列,更新每个点

poj 2155 Matrix(二维树树状数组)

Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 19113   Accepted: 7193 Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the i-th row and j-th column. Initially we have A[i, j] = 0 (1

返回一个二维数组最大矩阵的和

设计思想: 首先肯定是把二维转化为一维数组来比较,这样,先从第一行开始,把第一行看成是一维数组选出最大子数组具体实现是,设子数组和为sum=0,另设b=0,a[0][i]从a[0][0]开始检索当b<0时b=a[0][i]否则b=b+a[0][i]只有当b>sum时sum=b,(首先保证sum的初次赋值是大于0然后就是对b的操作首次出现正数时赋给b此时sum=0,b>sum,所以sum=b,然后继续上一步对b的正负性的判断分解为,开始由上一步b>0所以b=b+a[0][i],若a[

二维数组最大和的子数组的和

设计思想: 首先肯定是把二维转化为一维数组来比较,这样,先从第一行开始,把第一行看成是一维数组选出最大子数组具体实现是,设子数组和为sum=0,另设b=0,a[0][i]从a[0][0]开始检索当b<0时b=a[0][i]否则b=b+a[0][i]只有当b>sum时sum=b,(首先保证sum的初次赋值是大于0然后就是对b的操作首次出现正数时赋给b此时sum=0,b>sum,所以sum=b,然后继续上一步对b的正负性的判断分解为,开始由上一步b>0所以b=b+a[0][i],若a[