前端算法入门一:刷算法题常用的JS基础扫盲

前端算法入门一:刷算法题常用的JS基础扫盲,第1张

点击左上角文件-倒数第2个,点击选项-勾选默认JS开发环境

方法一:选择开发工具-WPS宏编辑器。方法二:按住Alt+F11

02函数

WPS JS每条语句后面可以有“;”,也可以没有“;”,程序都可以运行。

函数名可以用中文命名。

按F5默认会执行最后一个函数,如下代码就会输出MrFlySand-飞沙

alert()就是窗口输出

console()就是控制台输出

DebugPrint()

注意:在代码中所有标点符号在要英文状态下输入。

function 输出2(){

alert("MrFlySand-飞沙-520")

}

function 输出(){

alert("MrFlySand-飞沙")

}

登录后复制

03单元格

31读取单元格/输出单元格

311选择工作表

SheetsItem()是选中工作表,excel默认的第一个工作表名称也是Sheet1。

SheetsItem(2)是选中第2个工作表。圆括号()里面可以是数字如果里面是一个数字n,表示它是第n个表。

SheetsItem("飞沙的成绩")是选中的是“飞沙的成绩”工作表,注意:中文飞沙的成绩要在英文双引号""里面。

312选择单元格

Range()选择单元格

Value2意思就是值或元素

WPS JS可以使用运算符“+”,"A"+2就是A2。注意:"A"&2是错误的语法

function 读取单元格(){

// 输出第1个工作表的A1单元格的值

alert(SheetsItem(1)Range("A1")Value2)

// 输出工作表名为Sheet2的A2单元格的值

alert(SheetsItem("Sheet2")Range("A"+2)Value2)

}

登录后复制

32运用库函数和给单元格赋值

Date()是获取当前时间的函数

SheetsItem(1)Range("A1")Value2 = Date()意思是:第1个的工作表中A1 = 现在的日期

function Fun(){

SheetsItem(1)Range("A1")Value2 = Date();

alert(SheetsItem(1)Range("A1")Value2);

}

登录后复制

33设置单元格的颜色和背景

function MyFun(){

//选中B4单元格

Range("B4")Select();

//圆括号里面就是选择B4单元格的文字

(obj=>{

//改变这个字体的颜色

objColor = 2;

})(SelectionFont);

//圆括号里面就是选择B4单元格的内部背景

(obj=>{

//改变这个背景的颜色

objColor = 65536;

})(SelectionInterior);

}

登录后复制

04 新建工作表

function 新建工作表(){

var sht=WorksheetsAdd(null,Sheets(SheetsCount));

shtName="mrflysand的数据分析表"; //工作表的名称

}

登录后复制

05 if判断

如果第1个工作表的A1单元格的值是1,输出“1”和“有1或2”;如果第1个工作表的A1单元格的值不是1或2,输出“没有1和2”。

其中||表示或

function 读取单元格(){

// 输出第1个工作表的A1单元格的值

alert(SheetsItem(1)Range("A1")Value2)

// 判断语句

if(SheetsItem(1)Range("A1")Value2==1 || SheetsItem(1)Range("A1")Value2==2){

alert("有1或2")

}else{

alert("没有1和2")

}

}

登录后复制

06循环

61 实例一

for(步骤1; 步骤2; 步骤4){步骤3},for循环的执行步骤:

步骤1:定义i的初始值

步骤2:判断i的值是否符合条件,如果符合条件,执行步骤3;如果不符合条件,则结束。

步骤3:每次要执行的内容1,如一些代码程序

步骤4:每次要执行的内容2,一般情况下是自增

function Loop(){

for(var i=1; i<=5; i++){

alert(i)

}

}

登录后复制

运行结果:

1 2 3 4 5

登录后复制

62 实例二

function LoopArr(){

var arr = ["公众号","小知识酷","关注不迷路"]

for(var i=0; i<=2; i++){

SheetsItem(1)Range("A"+(i+1))Value2 = arr[i]

}

}

登录后复制

运行结果

代码解释说明

i=0时,"A"+(i+1)=A1,Range("A1"),arr[0]="公众号"

i=1时,"A"+(i+1)=A2,Range("A2"),arr[1]="小知识酷"

i=2时,"A"+(i+1)=A3,Range("A3"),arr[2]="关注不迷路",循环就会停止。

07数组

Resize(row,list)选中多个单元格,相当于一个二维数组。Resize(1,5)表示1行5列的一维数组;Resize(2,5)表示2行5列的二维数组;Resize(5,5)表示5行5列的二维数组。

row:选中多少行

list:选中多少列

arraylength:数组的长度

array:数组名

length:长度,数组里面元素个数

function 一维数组(){

// 一维数组的定义

arr=["MrFlySand","飞沙",'QQ',2602629646];

alert("数组里面元素个数:"+arrlength )

// 只在在A1单元格写入MrFlySand

// 只是把第一个元素放在单元格中

SheetsItem(1)Range("A1")Value2 = arr;

// 只在在A6单元格写入MrFlySand

// Resize(1,1):第一个1表示只显示1行;第2个1表示数组中第1个元素

SheetsItem(1)Range("A6")Resize(1,1)Value2 = arr;

// 在A11:C11单元格写入"MrFlySand","飞沙",'QQ'

// Resize(1,4):1表示只显示1行;3表示数组中前第3个元素

SheetsItem(1)Range("A11")Resize(1,3)Value2 = arr;

// 在A16:D18单元格写入"MrFlySand","飞沙",'QQ',2602629646

// Resize(3,arrlength):3表示显示3行;arrlength表示数组中元素的个数,及长度为4

// 选中的格子读入的数据是一个一维数组

SheetsItem(1)Range("A16")Resize(3,arrlength)Value2 = arr;

}

登录后复制

71一维数组的输出

function arr(){

let arr= ["MrFlySand","飞沙",'QQ',2602629646];

SheetsItem(1)Range("A1")Resize(1,arrlength)Value2 = arr;

}

登录后复制

输出内容

72一维数组的遍历

function Fun(){

// 定义数组

const arr = new Set(["MrFlySand","飞沙",'QQ',2602629646]);

//i表示值,arr表示在这个数组中遍历

for (let i of arr) {

Consolelog(i);

}

}

function Fun1(){

let arr= ["MrFlySand","飞沙",'QQ',2602629646];

// 定义数组

//n表示值,arr表示在这个数组中遍历

for(let n of arr){

Consolelog(n)

}

}

登录后复制

73二维数组的输出

输出下方的表格

代码说明:

在WpsJs中数组的下标是从0开始的

二维数组的定义格式:函数名=[["1","2"],["3","4"],["5","6","7"]]就比如在1个数组(1个年级)中有3个数组(3个班),且这3个数组(3个班)中有2个不同的学生。

arrlength获取1个数组(1个年级)中有几个数组(n个班)

arr[0]length获取1班的人数,有2个学生,分别是1、2

arr[1]length获取2班的人数,有2个学生,分别是3、4

arr[2]length获取3班的人数,有3个学生,分别是5、6、7

function 二维数组(){

// 二维数组的定义

arr=[["MrFlySand","飞沙",'QQ',2602629646],[2602629646,'QQ',"飞沙","MrFlySand"]];

// 输出二维数组的行数和列数

alert("行数:" + arrlength + ",列数:"+arr[0]length)

// 输出二维数组的2行3列的值/输出第2个学生的英文名

alert("2行3列的值:" + arr[1][3]);

// 输出二维数组的1行/输出第1个学生的所有个人信息

SheetsItem(1)Range("A1")Resize(1,arr[0]length)Value2 = arr[0]

// 输出二维数组的2行/输出第2个学生的所有个人信息

SheetsItem(1)Range("A2")Resize(1,arr[0]length)Value2 = arr[1]

}

登录后复制

74数组输出行和输出列

arr1是一个一维数组,输出显示的是一横排。

arr2是一个二维数组,输出显示的是一竖排。

function arr(){

let arr= ["MrFlySand","飞沙",'QQ',2602629646];

SheetsItem(1)Range("A1")Resize(1,arrlength)Value2 = arr;

let arr1= ["MrFlySand","飞沙",'QQ',2602629646];

SheetsItem(1)Range("A3")Resize(4,4)Value2 = arr1;

let arr2 = [["MrFlySand"],["飞沙"],['QQ'],[2602629646]];

SheetsItem(1)Range("A8")Resize(4,1)Value2 = arr2;

}

登录后复制

以上代码输出内容

75使用循环输出列

function arr2(){

let arr= ["MrFlySand","飞沙",'QQ',2602629646];

for(var i=1,j=0; j<=arrlength; i++,j++){

SheetsItem(1)Range("A"+i)Value2 = arr[j];

}

}

登录后复制

08类的使用

// 声明类

class Arms{

// 构造函数,给属性传值

constructor(name, attack) {

thisname = name;

thisattack = attack;

}

//返回当前装备的属性值

toString() {

return '名称:' + thisname + ', 攻击力:' + thisattack + '';

}

}

function 类(){

//定义类

let arr=new Arms("AK47-MrFlySand",88)

// 输出类

alert(arrtoString())

SheetsItem(1)Range("A1")Value2 = arrtoString();

}

登录后复制

关注查看全文

css

java

vba

项目管理

python

泰迪犬怎么喂养

精选推荐

广告

Javascript中最常用的55个经典技巧wps

25下载·1评论

2009年3月22日

JS入门必看全套笔记

9下载·0评论

2018年2月5日

WPS-JS宏开发-基础知识-03-三大基本结构

510阅读·0评论·0点赞

2022年10月22日

WPS JS宏入门案例集锦

7388阅读·5评论·17点赞

2022年9月28日

wps_excel办公+JS宏编程教程基础到进阶+函数使用手册+excel中使用JS代码实现宏编程。

41下载·0评论

2022年7月28日

wpsjs插件开发-采用js和wps交互功能

2793阅读·0评论·0点赞

2022年7月20日

高清播放机,大全,详情!

精选推荐

广告

WPSJS加载项技术介绍

1760阅读·0评论·0点赞

2022年6月1日

WPS中JS宏简单运用

11W阅读·3评论·5点赞

2021年11月22日

WPS Excel JS宏简单使用

4041阅读·0评论·3点赞

2022年4月13日

WPS下 宏使用js编写及一些脚本

31W阅读·2评论·6点赞

2021年12月9日

javascript资料wps

13下载·0评论

2012年11月26日

WPS-JS宏开发-基础知识-01-初识

5888阅读·0评论·1点赞

2022年6月11日

WPS JS隔一列插入一列

241阅读·0评论·0点赞

2022年4月15日

wps开发工具vba

59下载·3评论

2015年10月29日

WPS宏插件使用教程

7140阅读·0评论·0点赞

2022年7月6日

Wps开发工具-宏的使用

12W阅读·0评论·0点赞

2022年1月6日

在线编辑、在线预览、在线转换,基于wpsjs + java + react / vue,无需任何插件,零安装

133W阅读·165评论·43点赞

2019年11月12日

WPSJS加载项在线模式和离线模式

1244阅读·0评论·0点赞

2022年6月1日

WPS JS 加载项

4037阅读·5评论·0点赞

2021年4月20日

去首页

看看更多热门内容

假定数组名为a,则a[0]就是第一个元素。

var ary=[1,2,3,4];

var a=aryshift();//a=1;ary=[2,3,4];

arrayObjslice(start, [end])

slice 方法返回一个 Array 对象,其中包含了arrayObj 的指定部分。

参数:start,截取数组开始下标。end截止的下标,但不包括end元素

扩展资料:

JavaScript被归类为直译语言,因为主流的引擎都是每次运行时加载代码并解译。V8是将所有代码解译后再开始运行,其他引擎则是逐行解译(SpiderMonkey会将解译过的指令暂存,以提高性能,称为实时编译),但由于V8的核心部分多数用JavaScript撰写(而SpiderMonkey是用C++),因此在不同的测试上,两者性能互有优劣。

与其相对应的是编译语言,例如C语言,以编译语言编写的程序在运行之前,必须经过编译,将代码编译为机器码,再加以运行。

参考资料来源:百度百科-javascript

<HTML>

<HEAD>

<TITLE> New Document </TITLE>

<script language= "Javascript ">

//

//联动下拉框的实现

//fnSetSubItem_Combo的参数分别为:

//objCombo:父项ID

//objSubCombo:子项ID

//arrSubItems:子项数组

//strDefValu:子项默认选项的value值

//

function fnSetSubItem_Combo(objCombo,objSubCombo,arrSubItems,strDefValue){

var i;

var bFound;

fnClearCombo(objSubCombo);

bFound=false;

for(i=0;i <arrSubItemslength;i++){

if(arrSubItems[i][1] + " " == objCombovalue + " "){

var oOption = documentcreateElement( "OPTION ");

objSubCombooptionsadd(oOption);

oOptiontext = arrSubItems[i][2];

oOptionvalue = arrSubItems[i][0];

if(strDefValue + " " == oOptionvalue + " "){

oOptionselected=true;

}

bFound=true;

}

}

if(!bFound && objSubCombooptionslength == 0)

objSubCombodisabled=true;

else

objSubCombodisabled=false;

//alert(objSubComboonchange());

if(objSubComboonchange)

objSubComboonchange();

}

function fnClearCombo(objCombo){

var i,intLen;

//objComboselectedIndex=-1;

if(objComboProced ==1){

intLen=objCombooptionslength;

for(i=0;i <intLen-objComboFirstIdx;i++){

objCombooptions[objComboFirstIdx]=null;

//objCombooptionsremove(0);

}

}

else{

objComboFirstIdx=objCombooptionslength;

objComboProced =1;

}

}

function fnSetCityProv(objParObj,objSubObj,arrCPC){

objSubObjoptionslength=0;

//取得当前选中的ID,递归取得所有子ID

for(i=0;i <arrCPClength;i++){

if(arrCPC[i][0] == objParObjvalue){

objSubObjoptions[objSubObjoptionslength]=new Option(arrCPC[i][2],arrCPC[i][0]);

}

}

fnGetCPCSubItems(objParObj,objSubObj,arrCPC,objParObjvalue,0);

}

//先根

function fnGetCPCSubItems(objParObj,objSubObj,arrCPC,intParID,intLV){

var i;

var strCaption;

for(i=0;i <arrCPClength;i++){

if(arrCPC[i][1] == intParID){

switch(intLV){

case 0:strCaption= " -- " + arrCPC[i][2];break;

case 1:strCaption= " -- " +arrCPC[i][2];break;

}

objSubObjoptions[objSubObjoptionslength]=new Option(strCaption,arrCPC[i][0]);

if(intLV <= 1)

fnGetCPCSubItems(objParObj,objSubObj,arrCPC,arrCPC[i][0],intLV+1)

}

}

}

</script>

<script language= "Javascript ">

//生成数组函数

function fnCreateArray(intHeight,intWidth){

var i,arrRet;

arrRet=new Array(intHeight);//生成数组的第一维

for(i=0;i <intHeight;i++){

arrRet[i] = new Array(intWidth);//生成数组的第二维

}

return arrRet;//返回生成的数组

}

//生成数组并赋值

/第二层数组:Array-SecondLevel(数组)/

var arrSecondLevel;

arrSecondLevel=fnCreateArray(9,3);

arrSecondLevel[0][0]= "0101 ";//value

arrSecondLevel[0][1]= "01 ";//父项value

arrSecondLevel[0][2]= "彩电 ";//text

arrSecondLevel[1][0]= "0102 ";

arrSecondLevel[1][1]= "01 ";

arrSecondLevel[1][2]= "冰箱 ";

arrSecondLevel[2][0]= "0103 ";

arrSecondLevel[2][1]= "01 ";

arrSecondLevel[2][2]= "音响 ";

arrSecondLevel[3][0]= "0201 ";

arrSecondLevel[3][1]= "02 ";

arrSecondLevel[3][2]= "内存 ";

arrSecondLevel[4][0]= "0202 ";

arrSecondLevel[4][1]= "02 ";

arrSecondLevel[4][2]= "处理器 ";

arrSecondLevel[5][0]= "0203 ";

arrSecondLevel[5][1]= "02 ";

arrSecondLevel[5][2]= "显示器 ";

arrSecondLevel[6][0]= "0204 ";

arrSecondLevel[6][1]= "02 ";

arrSecondLevel[6][2]= "鼠标 ";

arrSecondLevel[7][0]= "0301 ";

arrSecondLevel[7][1]= "03 ";

arrSecondLevel[7][2]= "书柜 ";

arrSecondLevel[8][0]= "0302 ";

arrSecondLevel[8][1]= "03 ";

arrSecondLevel[8][2]= "椅子 ";

/第三层数组:Array-ThirdLevel(数组)/

var arrThirdLevel;

arrThirdLevel=fnCreateArray(13,3);

arrThirdLevel[0][0]= "010101 ";//value

arrThirdLevel[0][1]= "0101 ";//父项value

arrThirdLevel[0][2]= "长虹 ";//text

arrThirdLevel[1][0]= "010102 ";

arrThirdLevel[1][1]= "0101 ";

arrThirdLevel[1][2]= "TCL ";

arrThirdLevel[2][0]= "010103 ";

arrThirdLevel[2][1]= "0101 ";

arrThirdLevel[2][2]= "创维 ";

arrThirdLevel[3][0]= "010201 ";

arrThirdLevel[3][1]= "0102 ";

arrThirdLevel[3][2]= "容星 ";

arrThirdLevel[4][0]= "010202 ";

arrThirdLevel[4][1]= "0102 ";

arrThirdLevel[4][2]= "海尔 ";

arrThirdLevel[5][0]= "010301 ";

arrThirdLevel[5][1]= "0103 ";

arrThirdLevel[5][2]= "创新 ";

arrThirdLevel[6][0]= "010302 ";

arrThirdLevel[6][1]= "0103 ";

arrThirdLevel[6][2]= "牙兰 ";

arrThirdLevel[7][0]= "020101 ";

arrThirdLevel[7][1]= "0201 ";

arrThirdLevel[7][2]= "金士顿 ";

arrThirdLevel[8][0]= "020102 ";

arrThirdLevel[8][1]= "0201 ";

arrThirdLevel[8][2]= "黑金刚 ";

arrThirdLevel[9][0]= "020201 ";

arrThirdLevel[9][1]= "0202 ";

arrThirdLevel[9][2]= "Intel ";

arrThirdLevel[10][0]= "020202 ";

arrThirdLevel[10][1]= "0202 ";

arrThirdLevel[10][2]= "AMD ";

arrThirdLevel[11][0]= "020301 ";

arrThirdLevel[11][1]= "0203 ";

arrThirdLevel[11][2]= "三星 ";

arrThirdLevel[12][0]= "020302 ";

arrThirdLevel[12][1]= "0203 ";

arrThirdLevel[12][2]= "索尼 ";

/初始化联动下拉框/

function fnStart(){

fnSetSubItem_Combo(documentform1firstLevel,documentform1secondLevel,arrSecondLevel, "0101 ");//第二层

fnSetSubItem_Combo(documentform1secondLevel,documentform1thirdLevel,arrThirdLevel, "010101 ");//第三层

//参数依次为:父项,子项,子项数组,子项默认值

/--三级联动初始化,分两次调用--/

}

windowonload=fnStart;//页面载入时调用联动下拉框初始化函数

//-->

</script>

</HEAD>

<BODY>

<form name= "form1 " style= "font-size:12px; ">

商品:

<select name= "firstLevel " onChange= "fnSetSubItem_Combo(this,secondLevel,arrSecondLevel) ">

<option value= "01 " selected> 家电 </option>

<option value= "02 "> 电脑配件 </option>

<option value= "03 "> 家居 </option>

</select>  

<select name= "secondLevel " onChange= "fnSetSubItem_Combo(this,thirdLevel,arrThirdLevel) " style= "width:150px; "> </select>

<select name= "thirdLevel "> </select>

</BODY>

</HTML>

查看一下效果,应该很容易得到结果

有时我们可能需要重复一个包含多个节点的块,这时可以用 <template> 标签包裹这个块。这里的 <template> 标签只起到语义上的包裹作用,其本身不会被渲染出来。例如:

简单值 (primitive value) 即字符串、数字、boolean 等并非对象的值。对于包含简单值的数组,你可用 $value 直接访问值:

有时我们可能想要更明确地访问当前作用域的变量而不是隐式地回退到父作用域。你可以通过提供一个参数给 v-repeat 指令并用它作为将被迭代项的别名:

Vuejs 内部对被观察数组的变异方法 (mutating methods,包括 push(), pop(), shift(), unshift(), splice(), sort() 和 reverse()) 进行了拦截,因此调用这些方法也将自动触发视图更新。

下面是一个演示的例子,点击按钮的时候数据项会被移除

Vuejs 给被观察数组添加了两个便捷方法:$set() 和 $remove() 。

你应该避免直接通过索引来设置数据绑定数组中的元素,比如 demoitems[0] = {},因为这些改动是无法被 Vuejs 侦测到的。你应该使用扩展的 $set() 方法:

$remove() 只是 splice()方法的语法糖。它将移除给定索引处的元素。当参数不是数值时,$remove() 将在数组中搜索该值并删除第一个发现的对应元素。

当你使用非变异方法,比如filter(), concat() 或 slice(),返回的数组将是一个不同的实例。在此情况下,你可以用新数组替换旧的数组:

你可能会认为这将导致整个列表的 DOM 被销毁并重新渲染。但别担心,Vuejs 能够识别一个数组元素是否已有关联的 Vue 实例, 并尽可能地进行有效复用。

在某些情况下,你可能需要以全新的对象(比如 API 调用所返回的对象)去替换数组。如果你的每一个数据对象都有一个唯一的 id 属性,那么你可以使用 track-by 特性参数给 Vuejs 一个提示,这样它就可以复用已有的具有相同 id 的 Vue 实例和 DOM 节点。

例如:你的数据是这个样子的

那么你可以像这样给出提示:

在替换 items 数组时,Vuejs 如果碰到一个有 _uid: '88f869d' 的新对象,它就会知道可以直接复用有同样 _uid 的已有实例。 在使用全新数据重新渲染大型 v-repeat 列表时,合理使用 track-by 能极大地提升性能。

你也可以使用 v-repeat 遍历一个对象的所有属性。每个重复的实例会有一个特殊的属性 $key。对于简单值,你也可以象访问数组中的简单值那样使用 $value 属性。

在 ECMAScript 5 中,对于给对象添加一个新属性,或是从对象中删除一个属性时,没有机制可以检测到这两种情况。针对这个问题,Vuejs 中的被观察对象会被添加三个扩展方法: $add(key, value), $set(key, value) 和 $delete(key)。这些方法可以被用于在添加 / 删除观察对象的属性时触发对应的视图更新。方法 $add 和 $set 的不同之处在于当指定的键已经在对象中存在时 $add 将提前返回,所以调用 obj$add(key) 并不会以 undefined 覆盖已有的值。

v-repeat 也可以接受一个整数。在这种情况下,它将重复显示一个模板多次。 下面的例子将迭代3次。

有时候我们只需要显示一个数组的过滤或排序过的版本,而不需要实际改变或重置原始数据。Vue 提供了两个内置的过滤器来简化此类需求: filterBy 和 orderBy。

以上就是关于前端算法入门一:刷算法题常用的JS基础扫盲全部的内容,包括:前端算法入门一:刷算法题常用的JS基础扫盲、JS数组排序、js从字典里取到一个字,用什么算法最快等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9756025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存