java数组解析_实例讲解Java数组解构

数组是在程序设计中,为了处理方便,

把具有相同类型的若干元素按有序的形式组织起来的一种形式。我们可以把数组看成是用于储存多个相同类型数据的集合,我们在需要用到数组中的一部分数据时,就需要用到数组解构,获得相应的数据。本文我们就一起来学习Java数组解构的相关知识。

1.简单解构

const numbers = ['a', 'b', 'c'];

// 获取前两项

const [n1, n2] = numbers;

console.log(n1,n2)// 'a' , 'b'

// 获取第一项和第三项

const [n1, , n3] = numbers;

console.log(n1,n3)// 'a' , 'c'

// 获取第一项和第四项

const [n1, , n3, n4] = numbers;

console.log(n1,n3,n4)// 'a' , 'c', undefined

// 给默认值

const [n1, , n3, n4 = 'd'] = numbers;

console.log(n1,n3,n4)// 'a' , 'c', 'd'

2.嵌套数组解构

// 得到numbers中下标为4的数组中的下标为2的数据,放到变量n中

const [, , , , [, , n]] = numbers;

console.log(n); // 3

嵌套对象解构

赋给同名变量

const numbers = ['a', 'b', 'c', 'd', {

a: 1,

b: 2

}];

// 得到numbers中下标为4的数组的属性a,赋值给变量a

const [, , , , { a }] = numbers

console.log(a); // 1

赋给不同名变量

const numbers = ['a', 'b', 'c', 'd', {

a: 1,

b: 2

}];

// 得到numbers中下标为4的数组的属性a,赋值给变量A

const [, , , , { a: A }] = numbers

console.log(A); // 1

3.解构剩余项

const user = {

name: 'lisa',

age: 20,

sex: '女',

address: {

province: '江苏',

city: '无锡'

}

}

// 解构出name,然后剩余的所有属性,放到一个新的对象中,变量名为obj

// 最后得出

// name:lisa

// obj:{ age: 20,sex: '女', address: {···}}

const { name, ...obj } = user;

console.log(name, obj);

解构数组的剩余项

const numbers = [1, 2, 3, 4];

// 得到数组前两项,前两项放到变量a和b中,然后剩余的所有数据放到数组nums中

const [a, b, ...nums] = numbers;

console.log(a, b, nums); // 1, 2, [3, 4]

我们再来看下面的例子:

const article = {

title: "文章标题",

content: "文章内容",

comments: [{

content: "评论1",

user: {

id: 1,

name: "用户名1"

}

}, {

content: "评论2",

user: {

id: 2,

name: "用户名2"

}

}]

}

//解构出第二条评论的用户名和评论内容

// name:"用户名2" content:"评论2"

const { comments: [, { content, user: { name } }] } = article;

以上就是Java数组解构的相关知识,当然这些只是大概的讲解,想要更加详细的讲解过程可以观看本站的Java基础教程,帮你全面学习和巩固Java基础知识。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/* * 基于数组的向量实现 */ package dsa; public class Vector_Array implements Vector { private final int N = 1024;//数组的容量 private int n = 0;//向量的实际规模 private Object[] A;//对象数组 //构造函数 public Vector_Array() { A = new Object[N]; n = 0; } //返回向量中元素数目 public int getSize() { return n; } //判断向量是否为空 public boolean isEmpty() { return (0 == n) ? true : false; } //取秩为r的元素 public Object getAtRank(int r)//O(1) throws ExceptionBoundaryViolation { if (0 > r || r >= n) throw new ExceptionBoundaryViolation("意外:秩越界"); return A[r]; } //将秩为r的元素替换为obj public Object replaceAtRank(int r, Object obj) throws ExceptionBoundaryViolation { if (0 > r || r >= n) throw new ExceptionBoundaryViolation("意外:秩越界"); Object bak = A[r]; A[r] = obj; return bak; } //插入obj,作为秩为r的元素;返回该元素 public Object insertAtRank(int r, Object obj) throws ExceptionBoundaryViolation { if (0 > r || r > n) throw new ExceptionBoundaryViolation("意外:秩越界"); if (n >= N) throw new ExceptionBoundaryViolation("意外:数组溢出"); for (int i=n; i>r; i--) A[i] = A[i-1];//后续元素顺次后移 A[r] = obj;//插入 n++;//更新当前规模 return obj; } //删除秩为r的元素 public Object removeAtRank(int r) throws ExceptionBoundaryViolation { if (0 > r || r >= n) throw new ExceptionBoundaryViolation("意外:秩越界"); Object bak = A[r]; for (int i=r; i<n; i++) A[i] = A[i+1];//后续元素顺次前移 n--;//更新当前规模 return bak; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值