技术标签: foreach nodejs javascript
本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/81153733
博主地址是:http://blog.csdn.net/freewebsys
https://developer.mozilla.org/zh-CN/
还有这么一个开发者中心呢,上面搜索写JavaScript的东西也相当的全面。
开始是使用 firefox,现在使用了 chrome就再也不看 mozilla 的东西了。
但是人家有个号东西也去学习。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Introduction
学习javascript
虽然写javascript好多年,但是一些高级的用法不会。
造成代码感觉上冗余的多,不优美。
比如昨天写的CURD 项目设置属性为空,就相当难看的代码:
filters: {
id: '',
userName: '',
password: '',
nickName: '',
role: '',
status: '',
type: '',
},
loading: false,
dataForm: {
//编辑界面数据
id: '',
userName: '',
password: '',
nickName: '',
role: '',
status: '',
type: '',
createTime: '',
updateTime: '',
},
感觉上肯定有啥高级的用法,能将属性的默认值设置空啥的。
或者使用啥foreach的函数。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
拼接字符串:
let tmpDataForm = this.dataForm //赋值变量
Object.keys(tmpDataForm).forEach(function(key){
data += "&"+key+"=" + tmpDataForm[key]
})
进行filter查询:
let query = ""
let tmpFilters = this.filters //赋值变量
Object.keys(tmpFilters).forEach(function(key){
query += "&"+key+"=" + tmpFilters[key]
})
昨天的curd优化:
https://blog.csdn.net/freewebsys/article/details/81112630
<template>
<section>
<!--工具条-->
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
<el-form :inline="true" :model="filters">
<el-form-item><el-button type="primary" @click="editFunc">新建</el-button></el-form-item>
<el-form-item><el-input v-model="filters.id" placeholder="id"></el-input></el-form-item>
<el-form-item><el-input v-model="filters.userName" placeholder="用户名"></el-input></el-form-item>
<el-form-item><el-input v-model="filters.password" placeholder="密码"></el-input></el-form-item>
<el-form-item><el-input v-model="filters.nickName" placeholder="昵称"></el-input></el-form-item>
<el-form-item><el-input v-model="filters.role" placeholder="角色"></el-input></el-form-item>
<el-form-item><el-input v-model="filters.status" placeholder="状态"></el-input></el-form-item>
<el-form-item><el-input v-model="filters.type" placeholder="类型"></el-input></el-form-item>
<el-form-item>
<el-button type="primary" v-on:click="listFunc">查询</el-button>
</el-form-item>
</el-form>
</el-col>
<!--列表-->
<template>
<el-table :data="dataList" v-loading="loading" style="width: 100%;">
<el-table-column prop="id" label="id"/>
<el-table-column prop="userName" label="用户名"/>
<el-table-column prop="password" label="密码"/>
<el-table-column prop="nickName" label="昵称"/>
<el-table-column prop="role" label="角色"/>
<el-table-column prop="status" label="状态"/>
<el-table-column prop="type" label="类型"/>
<el-table-column prop="createTime" label="创建时间"/>
<el-table-column prop="updateTime" label="更新时间"/>
<el-table-column label="操作" width="150">
<template slot-scope="scope"><el-button-group>
<el-button type="primary" size="mini" @click="editFunc(scope.$index, scope.row)">编辑</el-button>
<el-button type="danger" size="mini" @click="deleteFunc(scope.$index, scope.row)">删除</el-button>
</el-button-group></template>
</el-table-column>
</el-table>
</template>
<el-col style="text-align:right;padding-top: 30px;">
<el-pagination @current-change="pageChangeFunc" background="" layout="prev, pager, next" :total="totalCount">
</el-pagination>
</el-col>
<!--编辑弹出页面-->
<el-dialog title="用户编辑" :visible.sync="dialogVisible">
<el-input v-model="dataForm.id" placeholder="id" type="hidden"/>
<el-form label-width="100px" :rules="dataFormRules" ref="dataForm">
<el-form-item label="用户名" prop="userName"><el-input/></el-form-item>
<el-form-item label="密码" prop="password"><el-input/></el-form-item>
<el-form-item label="昵称" prop="nickName"><el-input v-model="dataForm.nickName"/></el-form-item>
<el-form-item label="角色" prop="role"><el-input v-model="dataForm.role"/></el-form-item>
<el-form-item label="状态" prop="status"><el-input v-model="dataForm.status"/></el-form-item>
<el-form-item label="类型" prop="type"><el-input v-model="dataForm.type"/></el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="saveFunc">确 定</el-button>
</span>
</el-dialog>
</section>
</template>
<script>
export default {
data() {
return {
filters: {
id: '', userName: '', password: '', nickName: '', role: '', status: '', type: '',
},
loading: false,
dataForm: {
//编辑界面数据
id: '', userName: '', password: '', nickName: '', role: '', status: '', type: '', createTime: '', updateTime: '',
},
dataFormRules: {
//编辑界面校验规则
userName: [{required: true, message: '请输入用户名', trigger: 'blur' } ],
password: [{required: true, message: '请输入密码', trigger: 'blur' } ],
nickName: [{required: true, message: '请输入昵称', trigger: 'blur' } ],
role: [{required: true, message: '请输入角色', trigger: 'blur' } ],
status: [{required: true, message: '请输入状态', trigger: 'blur' } ],
type: [{required: true, message: '请输入类型', trigger: 'blur' } ],
},
dialogVisible: false,
dataList: [], //列表数据
totalCount: 0,
currentPage: 1
}
},
methods: {
editFunc: function(index, row) {
//新建&编辑
if (row == undefined) {
let tmpDataForm = this.dataForm //赋值变量,修改tmpDataForm即可
Object.keys(tmpDataForm).forEach(function(key){
tmpDataForm[key] = ''
})
this.dialogVisible = true
} else {
this.$axios.get('/userInfo/get?id=' + row.id)
.then(resp => {
//数据直接赋值
this.dataForm = resp.data.data
}).finally(() => {
this.loading = false
this.dialogVisible = true
})
}},
saveFunc: function() {
this.$refs['dataForm'].validate((valid) => {
if (!valid) { return false }
let data = ""
let tmpDataForm = this.dataForm //赋值变量
Object.keys(tmpDataForm).forEach(function(key){
data += "&"+key+"=" + tmpDataForm[key]
})
this.$axios.post('/userInfo/save?' + data)
.finally(() => {
this.dialogVisible = false
this.listFunc()
})
})
},
deleteFunc: function(index, row) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.$axios.delete('/userInfo/delete?id=' + row.id)
.finally(() => {
this.listFunc()
})
})
},
listFunc: function() {
this.loading = true
let query = ""
let tmpFilters = this.filters //赋值变量
Object.keys(tmpFilters).forEach(function(key){
query += "&"+key+"=" + tmpFilters[key]
})
this.$axios.get('/userInfo/list?page=' + this.currentPage + query)
.then(resp => {
this.dataList = resp.data.data
this.totalCount = resp.data.totalCount
}).finally(() => {
this.loading = false
})
},
pageChangeFunc: function(idx) {
this.currentPage = idx
this.listFunc()
}
},
created: function() {
this.listFunc()
}
};
</script>
js代码中出现大量的 set 代码其实是冗余的本来就是动态语言,不能像java那样去写:this.xxx = xxx 这样不优雅。
要用 forEach去写:
let tmpDataForm = this.dataForm //赋值变量,修改tmpDataForm即可
Object.keys(tmpDataForm).forEach(function(key){
tmpDataForm[key] = ''
})
这个要是大表单数据,十几个 也没有啥意义。
本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/81153733
文章浏览阅读122次。还是A+BTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 24568Accepted Submission(s): 11729Problem Description读入两个小于10000的正整数A和B,计算A+B。...
文章浏览阅读419次。HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息。FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。BASIC:仅记录请求的方法,URL以及响应状态码和执行时间。NONE:不记录任何日志信息,这是默认值。配置Feign日志有两种方式;方式二:java代码实现。注解中声明则代表某服务。方式一:配置文件方式。_feign 日志设置
文章浏览阅读155次。将容器管理的持久性 Bean 用于面向服务的体系结构本文将介绍如何使用 IBM WebSphere Process Server 对容器管理的持久性 (CMP) Bean的连接和持久性逻辑加以控制,使其可以存储在非关系数据库..._javax.ejb.objectnotfoundexception: no such entity!
文章浏览阅读1.5k次。基础java练习题一、递归实现跳台阶从第一级跳到第n级,有多少种跳法一次可跳一级,也可跳两级。还能跳三级import java.math.BigDecimal;import java.util.Scanner;public class Main{ public static void main(String[]args){ Scanner reader=new Scanner(System.in); while(reader.hasNext()){ _java 递归例题
文章浏览阅读1.5k次,点赞6次,收藏6次。目录1.串应用- 计算一个串的最长的真前后缀题目描述输入输出样例输入样例输出题解2.字符串替换(string)题目描述输入输出样例输入样例输出题解3.可重叠子串 (Ver. I)题目描述输入输出样例输入样例输出题解4.字符串操作(string)题目描述输入输出样例输入样例输出题解1.串应用- 计算一个串的最长的真前后缀题目描述给定一个串,如ABCDAB,则ABCDAB的真前缀有:{ A, AB,ABC, ABCD, ABCDA }ABCDAB的真后缀有:{ B, AB,DAB, CDAB, BCDAB_对存储在string数组内的所有以字符‘a’开始并以字符‘e’结尾的单词做加密处理。
文章浏览阅读68次。西安交通大学/算法设计与问题求解/树与二叉树/MOOC_算法设计与问题求解西安交通大学
文章浏览阅读1.6k次。问题:在Vue项目中出现如下错误提示:[Vue warn]: Computed property "totalPrice" was assigned to but it has no setter. (found in <Anonymous>)代码:<input v-model="totalPrice"/>原因:v-model命令,因Vue 的双向数据绑定原理 , 会自动操作 totalPrice, 对其进行set 操作而 totalPrice 作为计..._computed property "totalprice" was assigned to but it has no setter.
文章浏览阅读60次。十分暴力而简洁的解决方式:读取P和T的位置并自动生成唯一正确答案,将题给测点与之对比,不一样就给我爬!_basic 1003 case 1
文章浏览阅读422次。原标题:详解将Web项目War包部署到Tomcat服务器基本步骤详解将Web项目War包部署到Tomcat服务器基本步骤1 War包War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码。当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成Wa..._/opt/bosssoft/war/medical-web.war/web-inf/web.xml of module medical-web.war.
文章浏览阅读3k次,点赞3次,收藏13次。# -*- coding: utf-8 -*-# 简述:这里有四个数字,分别是:1、2、3、4#提问:能组成多少个互不相同且无重复数字的三位数?各是多少?def f(n):list=[]count=0for i in range(1,n+1):for j in range(1, n+1):for k in range(1, n+1):if i!=j and j!=k and i!=k:list.a..._python求从0到9任意组合成三位数数字不能重复并输出
文章浏览阅读1k次,点赞3次,收藏2次。<el-table-column prop="studentSex" label="性别" :formatter="sex"></el-table-column>然后就在vue的methods中写方法就OK了methods: { sex(row,index){ if(row.studentSex == 1){ return '男'; }else{ return '女'; }..._elementui table 性别
文章浏览阅读1.1k次。java文件操作之移动文件到指定的目录_java中怎么将pro.txt移动到design_mode_code根目录下