数组与对象

数组与对象总结

JavaScript

JS数组

//典型的数组
var array = [1,2,3]

//数组的访问
array[0];//获取第0个位置的值
//结果:1

array[0]=4;//给第0个元素赋值成4
//结果:[4,2,3]

array.push(4);//在数组最后插入一个元素4,并返回新长度
//结果:[1,2,3,4]

array.unshift(4);// 将新元素添加到数组开始,数组中的元素自动后移,返回数组新长度
//结果:[4,1,2,3]

array.pop();//移除最后一个元素,并返回该元素值
//结果:[1,2]

array.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移
//结果:[2,3]

array.splice(1, 2);//在位置1开始,删除2个元素
//结果:[1]

array.splice(1,0,777);//在位置1处添加一个元素,原元素后移,返回""
//结果:[1,777,2,3]

array.splice(1,2,777);//在位置1处添加一个新元素,并删除2个元素
//结果:[1,777]

[es6更多方法](https://www.cnblogs.com/sqh17/p/8529401.html)
[更多操作](https://www.cnblogs.com/qiantuwuliang/archive/2011/01/08/1930499.html)

//数组的遍历(for...of)推荐 🌟
for(const value of array){
	console.log(value)
}
//1
//2
//3

//数组的遍历(传统方法)
for(var i=0;i<array.length;i++){
	cosole.log(i,array[i])
}
//0,1
//1,2
//2,3

//数组的遍历(forEach)
array.forEach(function(value,index){
	console.log(index,value)
})
//0,1
//1,2
//2,3

//数组的遍历(for..in)
for(var i in array){
	cosole.log(i,array[i])
}
//0,1
//1,2
//2,3

JS对象

//典型的对象
var obj = {"a":1,"b":2,"c":3}

//对象获取值
obj.a;//获取名称a的值
//结果:1

//对象的遍历(ES6一共有5种)
##(1for...in
//for...in循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)。
for(var key in obj){
	//key:对象键值名,obj[key]:具体值
	console.log(key,obj[key])
}

//a,1
//b,2
//c,3

- 2)Object.keys(obj)
//Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)。
console.log(Object.keys(obj));
//["a", "b", "c"]
console.log(Object.values(obj));
// [1, 2, 3]

-3)Object.getOwnPropertyNames(obj)
//Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)。
console.log(Object.getOwnPropertyNames(obj));
//["a", "b", "c"]

-4)Object.getOwnPropertySymbols(obj)
//Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有Symbol属性。
console.log(Object.getOwnPropertySymbols(obj));
//[]

-5)Reflect.ownKeys(obj)
//Reflect.ownKeys返回一个数组,包含对象自身的所有属性,不管是属性名是Symbol或字符串,也不管是否可枚举。
console.log(Object.ownKeys(obj))
//Uncaught TypeError: Object.ownKeys is not a function

//解构赋值
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x // 1
y // 2
z // { a: 3, b: 4 }
//扩展运算符
let z = { a: 3, b: 4 };
let n = { ...z,c:777 };
n // { a: 3, b: 4 ,c:777}
[更多es6方法](https://www.runoob.com/w3cnote/es6-object.html)
[更多es6方法](https://www.cnblogs.com/woodk/p/6564055.html)

vue

//vue的写法
const HelloVueApp = { //声明一个对象
  data() {//一个方法data()
    return {//方法返回值,返回对象
      message: 'Hello Vue!!'
    }
  }
}
//这样写的好处,外部使用点语法调用
HelloVueApp.data().message
//结果:Hello Vue!

JSON转换

//典型的对象JSON
var str = '{"name":"小飞","age":38}';

//将字符串转化json对象:
//1.必须是标准json格式,双引号 
var json = JSON.parse(str);

//2. 可以转换非标准格式
var json = eval("(" + str + ")");//举例:eval(`(${变量})`)

//3. 函数方式转换,可以使用非标准json
var json = (new Function("return " + str))();

//json转对象
JSON.stringify(str);

Js字符串操作

var schoolhref = 'abcd-fdef.fff';
var schoolhrefs = schoolhref.substring(schoolhref.indexOf('-') + 1); //截取-后面的内容
var id = schoolhrefs.substring(0, schoolhrefs.indexOf('.')); //截全.前面的内容

str.length - 1

获取字符串中间内容
例:获取c和f中间内容
String str = "abcdefg";
String str2 = str.substring(str.indexOf("c")+ 1,str.indexOf("f"));

/*
 string 字符串;
 str 指定字符;
 split(),用于把一个字符串分割成字符串数组;
 split(str)[0],读取数组中索引为0的值(第一个值),所有数组索引默认从0开始;
 */
//split分割成数组,然后获取
var str_before = string.split(str)[0];
  var str_after = string.split(str)[1];
  alert('前:'+str_before+' - 后:'+str_after);

PHP

PHP数组

<?php 
  $arr=['a'=>123,'b'=>456]; //数组初始化方法1
  $arr=array("a"=>123,"b"=>456);//初始化方式2
  echo $arr['a']; //数组引用,值123
  print_r($arr); //查看数组
  //for遍历,只能用于遍历,纯索引数组
  for($i=0;$i<count($arr);$i++){
     echo $arr[$i];
  }
  //foreach遍历,可以遍历所有数组
  foreach ($arr as $key => $value) {
    echo "{$key}:{$value},";
  }
  //更多数组的遍历:https://www.jb51.net/article/156328.htm

PHP对象

<?php 
  class A{ 
    public $a=123; 
    public $b=456; 
  } 
  $obj=new A();
  echo $obj->a; //对象引用
  print_r($obj); //查看对象
  
  //foreach遍历
  foreach($obj as $key => $value) {
    print "$key => $value\n";
  }
  //对象中方法遍历和使用:https://www.php.net/manual/zh/language.oop5.iterations.php

JAVA

JAVA对象,类

  • 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。
  • 更多概念:https://www.runoob.com/java/java-object-classes.html
  • java中的对象使用get/set来提供对外访问

JAVA数组

  • 数组的长度固定,集合长度可变换
  • 数组可以存储基本数据类型 , 也可以存储引用数据类型; 而集合只能存储引用数据类型
  • 数组只能存储同种数据类型的元素 ,集合可以存储不同类型的元素
int[] array ={1,2,3};//定义一个数组方法1

int[] array = new int[3];//定义一个数组方法2
array[0]=1;
array[1]=2;
array[2]=3;

//for遍历
for (int i = 0; i < array.length; i++) {
	System.out.print(array[i]);
}

//foreach遍历
for (int element: array) {
    System.out.println(element);
  }
//转换成stirng直接输出
System.out.println(Arrays.toString(array));
//更多arrays操作:https://www.cnblogs.com/wei-jing/p/10540192.html

JAVA集合

在这里插入图片描述

  • List,继承Collection,可重复、有序的对象

  • Set,继承Collection,不可重复、无序的对象

  • Map,键值对,提供key到value的映射。key无序、唯一;value无序,可重复

在这里插入图片描述

  • 线程安全的效率都比较低,Vector,已被淘汰,可使用ArrayList替代。Hashtable,已被淘汰,可使用HashMap替代,如果是高并发的线程安全的实现,推荐使用ConcurrentHashMap
  • 常用集合 List / ArrayListMap / HashMap

List:

//定义一个arraylist
List<String> list=new ArrayList<String>();
list.add("Hello");
list.add("World");
list.add("HAHAHAHA");

//传统遍历
for(int i=0;i<list.size();i++){
	System.out.println(list.get(i));
}

//foreach遍历
for (String str : list) {
   System.out.println(str);
}

//Iterator遍历
Iterator<String> ite=list.iterator();
while(ite.hasNext())//判断下一个元素之后有值
{
    System.out.println(ite.next());
}

Map:

//定义一个map
Map<String, String> map = new HashMap<String, String>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");

//map内部是键值队{1=value1, 2=value2, 3=value3},但凡这种样式,包括js都不能使用传统循环取值

//foreach遍历1【取不到key】
for (String v : map.values()) {
    System.out.println(v);
 }
 
//foreach遍历2【keyset方法可以获取key】
for (String key : map.keySet()) {
  System.out.println(key + map.get(key));
 }
 
//大容量map遍历
for (Map.Entry<String, String> entry : map.entrySet()) {
 	System.out.println(entry.getKey() +entry.getValue());
}

//Iterator遍历
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
 Map.Entry<String, String> entry = it.next();
 System.out.println(entry.getKey() + entry.getValue());
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值