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

Posted cxf1214

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维数组(扩展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";
?

 

以上是关于二维数组(扩展hash数组)以及json,严格模式,字符串的常用api的主要内容,如果未能解决你的问题,请参考以下文章

redis怎么存数组和获取数组?

js json解析并重组成二维数组

算法问题拓展——kadane算法及其二维数组的扩展

HDU4456-Crowd (坐标旋转处理+hash处理+二维树状数组)

c语言问题:c语言中二维数组在内存中怎样存储?

二维数组转化为json数组