-
2018-07-04 20:54:31
package cn.bdqn; public class Customer { //属性 String name; int age; boolean isMember; //方法 显示客户的信息 public void show(){ System.out.println(name+"\t"+age+"\t"+isMember); } }
package cn.bdqn; //类 import com.bdqn.Student; public class CustomerBiz { // 新建一个 数组 名为customer,该数组内的 数组元素都是属于Customer类; Customer[] customer=new Customer[10]; //增加 //public void addStudent(int id,String name,int age,int score) // 方法 public void addStudent(Customer cust){ for(int i=0;i<customer.length;i++){ if(customer[i]==null){ customer[i]=cust; break; } } } public void showStudents() { // TODO Auto-generated method stub System.out.println("客户信息"); for(int i=0;i<customer.length;i++){ if(customer[i]!=null){ customer[i].show();//重要点: 数组元素customer[i] 调用 该类Customer中的方法 } } } }
package cn.bdqn; public class TestCus { public static void main(String[] args) { // TODO Auto-generated method stub Customer customer1=new Customer(); customer1.name="张三"; customer1.age=30; customer1.isMember=false; Customer customer2=new Customer(); customer2.name="张三丰"; customer2.age=100; customer2.isMember=true; CustomerBiz customerBiz=new CustomerBiz(); customerBiz.addStudent(customer1); customerBiz.addStudent(customer2); customerBiz.showStudents(); } }
更多相关内容 -
解决vue数组中对象属性变化页面不渲染问题
2021-01-19 16:47:36做checkbox多选功能的时候遇到了一个坑,逻辑怎么看都对,但是就是有bug,最后发现数组那里值变了页面勾选...你打开控制台,然后用前面例子的 items 数组调用变异方法:example1.items.push({ message: ‘Baz’ }) 。 -
数组中添加对象 & 通过递归数组,给数组中的对象添加新字段 & $set给对象添加新属性 & 遍历唯一ID标识-...
2021-05-20 15:03:35数组中添加对象 & 通过递归数组,给数组中的对象添加新字段 & $set给对象添加新属性 & 遍历唯一ID标识-随机数或时间戳 1、空数组中添加对象 var cardNumArr = []; //定义一个空的数组 var cardNumObj...数组中添加对象 & 通过递归数组,给数组中的对象添加新字段 & $set给对象添加新属性 & 遍历唯一ID标识-随机数或时间戳
1、空数组中添加对象
var cardNumArr = []; //定义一个空的数组 var cardNumObj = {}; //定义一个空的对象 cardNumObj = { name: '李白', id: 1 }; cardNumArr.push(cardNumObj); console.log(cardNumArr);
效果
2、js高效修改对象数组里的对象属性名
有些时候,我们前端从后端拿过来的JSON对象数据,某些字段并不是前端想要的,需要对一些字段名进行重命名。一般修改对象数组的对象属性名:
JSON.parse(JSON.stringify(data).replace(/name/g, 'new_name')) //data为数组,name为修改前,new_name为修改后
解释:
1)JSON.stringify()把json对象转成json字符串;
2)使用正则的replace()方法替换属性名;
3)JSON.parse()把json字符串又转成json对象。
修改多个属性:当要修改多个属性名时,多次调用replace方法,可以链式调用。如下面说明
JSON.parse(JSON.stringify(data).replace(/name1/g, 'new_name1').replace(/name2/g, 'new_name2').replace(/name3/g, 'new_name3')...)
附:
JSON.parse和JSON.stringify方法详解
1、JSON.parse(“要转换的数据”)
2、JSON.stringify(“要转化的数据”)
3、首先,两个方法的用法是有差别的:
①.JSON.stringify是从一个对象中解析出字符串
②.JSON.parse是从一个字符串中解析出json(键值对)
4、所以在使用的时候如果参数不对应,就不能正确转换:
一.JSON.parse()【从一个字符串中解析出json对象】
例子:
1.定义一个字符串,var data=’{“name”:“goatling”}’
2.解析对象,JSON.parse(data)
3.结果是:
name:“goatling”
二.JSON.stringify()【从一个对象中解析出字符串】
1.var data={name:‘goatling’}
2.JSON.stringify(data)
3.结果是:
‘{“name”:“goatling”}’
实例-给数组对象修改属性名
var arr = [{ "courseName": "英语", "code": "english" }, { "courseName": "药物化学", "code": "yw" } ]; console.log(arr) arr = JSON.stringify(arr).replace(/courseName/g, "title").replace(/code/g, "name"); console.log(arr) var b = JSON.parse(arr); console.log(b)
显示效果
3、$set给对象添加新属性
类似——Vue.set(object, key, value) 方法将响应属性添加到嵌套的对象上
this.$set(el,"myID",myID)
“myID”——key,对象属性名
myID——value,属性值
动态生成随机数——避免v-for或forEach等循环时,出现重复
:key=index
,出现控制台标红// 1、随机数——优选 let myID = Math.random().tostring(36).substr(2); // 2、时间戳——遍历太快,会出现时间戳一样的情况 let myID = Date.parse(new Date())
通过递归数组,给数组中的对象添加新字段
methods:{ // 递归 添加字段 recursion(arr) { console.log(arr) arr.forEach((el) => { console.log(el) // let myID = Date.parse(new Date()); let myID = Math.random().toString(36).substr(2); this.$set(el, "myID", myID); console.log(el) if (el.children && el.children.length) { this.recursion(el.children); } }); }, } //调用递归方法 this.recursion(Array); var Array = [{ "id": 1, "showName": "XXX席位方案", "children": [{ "id": 121, "showName": "XXX部们", "children": [{ "id": 131, "showName": "系统分类", "children": [{ "id": 141, "code": "172.16.66.212", "showName": "电脑席位", "startOver": 96, "memoryUsage": 18, "cpuUsage": 39, "children": [{ "id": 151, "showName": "软件开发", "code": 65894234, "startOver": 16, "cpuUsage": 45, "memoryUsage": 17 }] }] }] }] }]
实例-递归方式添加数组中对象属性
全代码单页面实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <button @click="showinfo(arr)">显示</button> </div> // <script src="./vue.js"></script> // 或 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var vm = new Vue({ el: '#app', data: { arr: [{ "id": 1, "showName": "XXX席位方案", "children": [{ "id": 121, "showName": "XXX部们", "children": [{ "id": 131, "showName": "系统分类", "children": [{ "id": 141, "code": "172.16.66.212", "showName": "电脑席位", "startOver": 96, "memoryUsage": 18, "cpuUsage": 39, "children": [{ "id": 151, "showName": "软件开发", "code": 65894234, "startOver": 16, "cpuUsage": 45, "memoryUsage": 17 }] }] }] }] }] }, // 给vue实例定义 方法,这个方法可以供事件操作使用 methods: { showinfo: function (arr) { console.log(this) // 获取data数据,具体通过this关键字 console.log(arr) arr.forEach((el) => { console.log(el) // let myID = Date.parse(new Date()); let myID = Math.random().toString(36).substr(2); this.$set(el, "myID", myID); console.log(el) if (el.children && el.children.length) { this.showinfo(el.children); } }) } } }); console.log(vm) </script> </body> </html>
显示效果
-
【微信小程序】给后台返回的对象数组每个对象添加指定新属性
2021-11-01 15:50:30auto 与 seeMore 属性是在请求到后台的数据后逐条添加的; 代码 主要补充的是页面加载时 js 中的初始化数据方法部分: Component({ /** * 组件的属性列表 */ properties: { // 定义一个list数组对象接收父组件...效果
后台返回数据:
添加属性后数据:
说明
auto
与seeMore
属性是在请求到后台的数据后逐条添加的;代码
主要补充的是页面加载时 js 中的初始化数据方法部分:
Component({ /** * 组件的属性列表 */ properties: { // 定义一个list数组对象接收父组件传的数据 list: { type: Array, value: [] }, scene: { type: String, value: '' } }, /** * 组件的初始数据 */ data: { }, /** * 组件的方法列表 */ methods: { /** * 添加展开/收起属性 */ init: function () { const that = this; // 给后台返还的数据就对象加对象属性值 that.properties.list.forEach((r) => { // list是后台返回的数据 r.auto = false; // r = list[0]的所有数据,这样直接 r.新属性 = 属性值 即可 r.seeMore = false; }); that.setData({ // 这里划重点 需要重新setData 下才能js 和 wxml 同步,wxml才能渲染新数据 list: that.properties.list }); console.log('list', that.properties.list); } }, /** * 组件的生命周期 */ lifetimes: { attached: function () { // 在组件实例进入页面节点树时执行 }, detached: function () { // 在组件实例被从页面节点树移除时执行 }, ready: function () { const that = this; that.init(); } } });
如果不是写在组件上的,则:
/** * 添加展开/收起属性 */ init: function () { const that = this; // 给后台返还的数据就对象加对象属性值 that.data.list.forEach((r) => { // list是后台返回的数据 r.auto = false; // r = list[0]的所有数据,这样直接 r.新属性 = 属性值 即可 r.seeMore = false; }); that.setData({ // 这里划重点 需要重新setData 下才能js 和 wxml 同步,wxml才能渲染新数据 list: that.data.list }); console.log('list', that.data.list); }
别忘了在生命周期函数
onLoad
,加载此方法; -
java如何遍历对象数组
2021-02-13 01:03:53// 数组元素实例化对象 break; } } } // 输出 public void showCustomers() { System.out.println("编号" + "\t" + "积分"); for (int i = 0; i ; i++) { if (customers[i] != null) { System.out.println(customers...第一个类publicclassCustomer{publicintintegral;//积分publicintnumber;//编号}第二个类publicclassCustManger{Customer[]customers=newCustomer[100];publicvoidadd(Customercust){...
第一个类
public class Customer {
public int integral;// 积分
public int number;// 编号
}
第二个类
public class CustManger {
Customer[] customers = new Customer[100];
public void add(Customer cust) {
for (int i = 0; i < customers.length; i++) {
if (customers[i] == null) {
customers[i] = cust;// 数组元素实例化对象
break;
}
}
}
// 输出
public void showCustomers() {
System.out.println("编号" + "\t" + "积分");
for (int i = 0; i < customers.length; i++) {
if (customers[i] != null) {
System.out.println(customers[i].number + "\t"
+ customers[i].integral);
}
}
}
}
测试类
import java.util.Scanner;
public class CustomerText {
public static void main(String[] args) {
Customer cust = new Customer();// 属性对象
CustManger cust2 = new CustManger();// 方法对象
Scanner input = new Scanner(System.in);
for (int i = 0; i < 2; i++) {
System.out.print("输入会员编号:");
cust.number = input.nextInt();
System.out.print("输入会员积分:");
cust.integral = input.nextInt();
cust2.add(cust);// 传入对象参数
}
System.out.println("***会员列表***");
cust2.showCustomers();
}
}
控制台结果:
输入会员编号:888888
输入会员积分:88
输入会员编号:666666
输入会员积分:66
***会员列表***
编号 积分
666666 66
666666 66
输出时第二次覆盖了第一次 哪里出错了?刚学java没多久只学了基础 刚学到简单的类和对象
求大神简单解答下 谢谢!
展开
-
vue数组中对象属性变化页面不渲染问题
2020-12-19 03:24:52”首先,解释的话,原因就是Object.observe 已经被废弃了,所以vue不会用一个废弃jsapi来实现对象属性监听。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/observe... -
js向对象中添加元素(对象,数组)
2022-03-08 11:25:50这样添加进去的元素,就是一个值 或 对象 或 数组 var obj = {"name":"leo"}; console.log(obj); <!-- 往对象中添加元素 对象名["属性名"] = 值 (值:可以是一个值,可以是一个对象,也可以是一个数组) 这样添加... -
JS实现json对象数组按对象属性排序步骤详解
2021-04-27 01:38:59这次给大家带来JS实现json对象数组按对象属性排序步骤详解,JS实现json对象数组按对象属性排序的注意事项有哪些,下面就是实战案例,一起来看一下。在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json... -
vue 如何监听对象属性变化 修改对象、数组属性--watch $set $delete (17)
2020-10-26 10:34:02我们可以使用computed去监听视图中data数据的变化,但是,有两种类型是监听不了,那就是对象与数组。 watch 接下来,我们使用watch属性去监听这两种数据类型内部成员值的变化。 1.deep 增加deep选项,监听对象内部... -
JavaScript中对象数组,如何给对象添加和删除一个新属性
2018-09-03 20:06:441 var a =[{name: 'Tom',... 现在给a数组中的第一个对象添加性别属性 1 2 3 a[0]['gender']='women' a[0]['address']="China" a[1].provinc... -
解决Vue数组中对象属性变化页面不渲染问题_百厌_前端开发者
2020-12-24 05:43:59做checkbox多选功能的时候遇到了一个坑,逻辑怎么看都对,但是就是有bug,最后发现数组...数组更新检测变异方法push()pop()shift()unshift()splice()sort()reverse()你打开控制台,然后用前面例子的 items 数组调... -
微信小程序--修改data数组或对象里面的值或者给对象添加键值对
2019-07-11 09:46:113.修改data里的数组或对象的属性(注意ListProp必须是双引号) var chListShow=!this.data.ListData[e.target.dataset.index].chListShow // e.target.dataset.index var ListProp="ListData["+e.target.... -
js中遍历Map对象的方法
2020-12-12 23:27:34//火狐控制台打印输出: Object { fileNumber="文件编号", fileName="文件名称"} for(var key in jsonData) console.log("属性:" + key + ",值:"+ jsonData[key]); } 打印输出: 属性:fileNumber, 值:文件编号 ... -
使用for循环为对象属性赋值;将对象存入数组中,用for循环输出数组
2020-04-23 11:35:47/任务二:创建士兵(Soldiers)类,该类有三个属性name(名字),x(横坐标),y(纵坐标) 在该类中定义有参构造方法,该方法有一...在主方法中使用for循环创建5个士兵对象,每个士兵对象的姓名以及x,y坐标是通过用户... -
一些前端常用的数组对象方法
2019-10-22 16:53:24创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 比如,创建一个学生年龄数组,该数组的值必须大于法定饮酒年龄: const studentsAge = [17, 16, 18, 19, 21, 17]; const ableToDrink = studentsAge.... -
js中把json对象数组按某个属性进行排序
2019-05-26 19:33:16js中json对象数组按对象属性排序 在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据json中某一项进行数组的排序。 例如返回的数据结构大概是这样: result=[ {id:1,name:... -
Vue进阶(九十七):对象动态添加属性和值
2020-02-28 15:59:17在vue中请求接口中,存在多个方法同时依赖同一个方法的情形,当所依赖的方法需要新增入参时,则需要同时修改多个依赖该方法的入参,为此,可以使用vue给对象动态添加属性和值的特性在公用方法中设置共同的参数。... -
java学习--基础知识第九天--对象数组、集合类之ArrayList、学生管理系统案例
2021-03-09 01:40:01今日内容介绍u 对象数组u 集合类之ArrayListu 学生管理系统案例第1章 对象数组1.1 对象数组概述A:基本类型的数组:存储的元素为基本类型int[] arr={1,2,3,4}B:对象数组:存储的元素为引用类型Student[] stus=new ... -
前端vue从后台取到数据(数组对象)后遍历给对象添加属性,修改这个属性为什么没有用?
2019-04-30 15:04:29从后台获取数组对象,想给对象添加只在前端用得上的属性如item_checked: false 代码 axios.get(url).then(response=>{ if(response.status === 200){ this.list = response.data this.list.forEach(el=>{ ... -
Vue.set( target, key, value ) 设置数组元素/向响应式对象添加属性
2018-09-29 15:05:58向响应式对象添加属性 <div id="div"> <p >{{items}}</p> </div> <script> var vm = new Vue({ el:"#div",... -
JS数组中对象赋值问题(针对对象个数未知的赋值报错)
2021-04-14 15:20:22当一个数组内部元素为...如果在给数组赋值的时候直接给对象赋值则会报错,如下所示: 下面给出两种解决办法: 1、通过循环直接向每个数组元素的对象赋值 2、通过先给对象赋值,然后把对象 push 进数组的方式 ... -
vue中,对象数组多层嵌套时,更新页面数据
2020-12-24 09:16:541、当你发现你给对象加了一个属性,在控制台能打印出来,但是却没有更新到视图上时,也许这个时候就需要用到this.$set()这个方法了,简单来说this.$set的功能就是解决这个问题的啦。官方解释:向响应式对象中... -
js创建数组(元素都是对象)
2021-11-10 20:20:15js创建数组(数组元素都是对象) 对象 var obj = { //属性1 attribute1:' ', //属性2 attribute2:' ' } 数组 这里创建的是空数组,并且不会指定数组...给数组添加元素 var test = function(){ //数组 var a -
js 控制台调试——console 对象【详解】
2022-03-31 11:05:25console对象是JavaScript的原生对象,用于与控制台窗口互动。 console.log() 用于在console窗口输出信息。 可接受多个参数,并将结果连接起来输出。 console.log("Hello World") // Hello World console.log("a...