Javascript面试题

1、数组的创建

var arrayObj = new Array(); //创建一个数组

var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度

var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值

要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。

2、数组的元素的访问

var testGetArrValue=arrayObj[1]; //获取数组的元素值

arrayObj[1]= “这是新值”; //给数组元素赋予新的值

3、数组元素的添加

arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度

arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度

arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回”"。

4、数组元素的删除

arrayObj.pop(); //移除最后一个元素并返回该元素值

arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移

arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素

5、数组的截取和合并

arrayObj.slice(start, [end]); //以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素

arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组

6、数组的拷贝

arrayObj.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向

arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向

7、数组元素的排序

arrayObj.reverse(); //反转元素(最前的排到最后、最后的排到最前),返回数组地址

arrayObj.sort(); //对数组元素排序,返回数组地址

8、数组元素的字符串化

arrayObj.join(separator); //返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。

toLocaleString 、toString 、valueOf:可以看作是join的特殊用法,不常用

 

二、数组对象的3个属性

1、length 属性

Length属性表示数组的长度,即其中元素的个数。因为数组的索引总是由0开始,所以一个数组的上下限分别是:0和length-1。和其他大多数语言不同的是,JavaScript数组的length属性是可变的,这一点需要特别注意。当length属性被设置得更大时,整个数组的状态事实上不会发生变化,仅仅是length属性变大;当length属性被设置得比原来小时,则原先数组中索引大于或等于length的元素的值全部被丢失。下面是演示改变length属性的例子:

var arr=[12,23,5,3,25,98,76,54,56,76];

//定义了一个包含10个数字的数组

alert(arr.length); //显示数组的长度10

arr.length=12; //增大数组的长度

alert(arr.length); //显示数组的长度已经变为12

 

alert(arr[8]); //显示第9个元素的值,为56

arr.length=5; //将数组的长度减少到5,索引等于或超过5的元素被丢弃

alert(arr[8]); //显示第9个元素已经变为”undefined”

arr.length=10; //将数组长度恢复为10

alert(arr[8]); //虽然长度被恢复为10,但第9个元素却无法收回,显示”undefined”

由上面的代码我们可以清楚的看到length属性的性质。但length对象不仅可以显式的设置,它也有可能被隐式修改。JavaScript中可以使用一个未声明过的变量,同样,也可以使用一个未定义的数组元素(指索引超过或等于length的元素),这时,length属性的值将被设置为所使用元素索引的值加1。例如下面的代码:

var arr=[12,23,5,3,25,98,76,54,56,76];

alert(arr.length);

arr[15]=34;

alert(arr.length);

代码中同样是先定义了一个包含10个数字的数组,通过alert语句可以看出其长度为10。随后使用了索引为15的元素,将其赋值为15,即arr[15]=34,这时再用alert语句输出数组的长度,得到的是16。无论如何,对于习惯于强类型编程的开发人员来说,这是一个很令人惊讶的特性。事实上,使用new Array()形式创建的数组,其初始长度就是为0,正是对其中未定义元素的操作,才使数组的长度发生变化。

由上面的介绍可以看到,length属性是如此的神奇,利用它可以方便的增加或者减少数组的容量。因此对length属性的深入了解,有助于在开发过程中灵活运用。

2、prototype 属性

返回对象类型原型的引用。prototype 属性是 object 共有的。

objectName.prototype

objectName 参数是object对象的名称。

说明:用 prototype 属性提供对象的类的一组基本功能。 对象的新实例“继承”赋予该对象原型的操作。

对于数组对象,以以下例子说明prototype 属性的用途。

给数组对象添加返回数组中最大元素值的方法。要完成这一点,声明一个函数,将它加入 Array.prototype, 并使用它。

function array_max( )

{

var i, max = this[0];

for (i = 1; i < this.length; i++)

{

if (max < this[i])

max = this[i];

}

return max;

}

Array.prototype.max = array_max;

var x = new Array(1, 2, 3, 4, 5, 6);

var y = x.max( );

该代码执行后,y 保存数组 x 中的最大值,或说 6。

3、constructor 属性

表示创建对象的函数。

object.constructor //object是对象或函数的名称。

说明:constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。

例如:

x = new String(“Hi”);

if (x.constructor == String) // 进行处理(条件为真)。



function MyFunc {

// 函数体。

}

y = new MyFunc;

if (y.constructor == MyFunc) // 进行处理(条件为真)。

对于数组来说:

y = new Array();

/*** 全选的所有指定名称的checkbox*@state 全选的checkbox的状态*@name   表格中的所有checkbox的名称*@author fangtf*@type void*/function selectAll(state,name) {    var ids = document.getElementsByName(name);    for (var i = 0; i     {            ids[i].checked = state;    }}/*** 全选的所有指定id名称的同名checkbox*@state 全选的checkbox的状态*@name   表格中的所有checkbox的名称*@name   表格中的所有checkbox的id*@author fangtf*@type void*/function selectAllCheckboxByID(state,name,id) {    var ids = document.getElementsByName(name);    for (var i = 0; i     {            if(ids[i].id == id)            {                ids[i].checked = state;            }    }}/*** 全选页面上所有的checkbox*@state 全选的checkbox的状态*@author fangtf*@type void*/function selectAlls(state){    var inputs = document.getElementsByTagName(“input”);    for(var i =0;i    {        if(inputs[i].type == ”checkbox”)        {            inputs[i].checked =state;        }    }}/***得到鼠标所单击的行*@type Object*/function GetRow(oElem) {    while (oElem) {        if (oElem.tagName.toLowerCase() == ”tr” && oElem.parentElement.tagName.toLowerCase() == ”tbody”) {            return oElem;        }        if (oElem.tagName.toLowerCase() == ”table” || oElem.tagName.toLowerCase() == ”th”) {            return false;        }        oElem = oElem.parentElement;    }}/*** 全选当前行的checkbox*@state 全选的checkbox的状态*@author fangtf*@type void*/function selectRowCheckbox(state){  var row = GetRow(window.event.srcElement);  var cells = row.childNodes;  for(var i=0;i  {      var cell = cells[i].childNodes[0];     if(cell.tagName == ”INPUT”)     {        cell.checked = state;     }  }}/***选中指定值的Radio*如:有两个radio,*第一个的name=”ids”,value=”1″*第二个的name=”ids”,value=”2”*调用方法selectRadio(“ids”,”1″);*那么数值为1的Radio将被选中100.*@name radio的名称

101.*@value radio的值

102.*@author fangtf

103.*@type void

104.*/

105.function selectRadio(name,value) {

var radioObject = document.getElementsByName(name);if(value === ”"){radioObject[0].checked = true;return;}for (var i = 0; i {if(radioObject[i].value == value){radioObject[i].checked = true;break;}}121.}

124./**

125.*选中指定值的checkbox

126.*如:有两个checkbox,

127.*第一个的name=”ids”,value=”1″

128.*第二个的name=”ids”,value=”2”

129.*第三个的name=”ids”,value=”3″

130.*调用这个方法selectCheckbox(“ids”,”1,2″)那么数值为1,2的checkbox将被选中

131.*

132.*@name 要选中的checkbox数组的名称

133.*@value 判断时候选中的值

134.*@author fangtf

135.*@type void

136.*/

137.function selectCheckbox(name,value) {

var checkObject = document.getElementsByName(name);var values = value.split(“,”);for(var j = 0; j {for (var i = 0; i {if(checkObject[i].value == values[j]){checkObject[i].checked = true;break;}}}152.}

154./**

155.*选中指定值的select

156.*如:有一个名称为user的select

157.*

158.*

159.*调用这个方法selectOption(“user”,”0″)那么选项为0的选项就被选中

160.*

161.*@name  String  select的名称

162.*@value String  判断时候选中的值

163.*@author fangtf

164.*@type void

165.*/

166.function selectOption(name,value)

167.{

document.getElementsByName(name)[0].value=value;170.}

web service 数据传输有什么限制? 为什么?DataTable可以作为web service参数传递么?

  所传输的数据必须是可序列化的。因为需要转换为XML格式以可以穿越防火墙,做到真正的数据共享。

   因为DataSet处理DataTable的序列化以便进行封送处理,所以无法传递单个DataTable

在 ADO.NET 的三个基本数据对象 — DataReader、DataTable 和 DataSet 中,只有 DataSet 可以与 Web 服务之间传递。这是因为,为了与 Web 服务进行通信,对象必须是可序列化的。(序列化是一个过程,它用于将对象的公共属性转换为 XML,并且因为 XML 只是纯文本,所以可以将其从一个应用程序传输到另一个应用程序,并且可以穿越防火墙,从而克服了 COM 的主要障碍之一。)DataReader 无法序列化,因为它们需要到服务器的开放连接。并且,因为 DataSet 处理 DataTable 的序列化以便进行封送处理,所以您也无法传递单个 DataTable。让我们研究一些示例。

传递 DataSet

假设我们正在运行一个订阅 Web 服务,该服务可返回所请求的有价证券在给定日期的收盘价格。用户传入用户 ID 和密码,以及他/她希望看到的有价证券和收盘价格的 DataTable。Web 服务随后验证他/她的成员身份并返回一个 DataTable,其中包含股票符号和它们的收盘价格,或者包含错误信息。

由于使用者应用程序(即,“消耗”该 Web 服务的应用程序)的开发人员需要知道股票符号和错误信息的期望结构,因此 DataSet 需要遵守您提供的发布规范。出于我们的目的,我们将假设以下条件:股票符号将存储在一个 DataTable 中,它包含三个列:一个名为 Symbol、类型为 varchar(5) 的列,一个名为 ClosingDate、类型为 datetime 的列,以及一个名为 Price、类型为 float 的列。如果在此过程中的任何时候生成错误,都将在一个只包含一列的 DataTable 中返回错误信息 — 该列的名称为 ErrorMessage,类型为 varchar(100),并且包含错误信息。通过简单地引用所返回 DataTable 的列 count,开发人员可以知道该过程是否成功。

编写函数,用于过滤一个数组内重复的元素,并用这些元素重构一个新数组,新数组内也不能有重复元素。/*

   *   * @author:unwonk@msn.com   */Array.prototype.indexOf = function(val){    var index = -1;    for (var i = 0; i         if (this[i] === val) {            index = i;            break;        }    }    return index;}Array.prototype.hasOf = function(val){    var has = 0;    for (var i = 0; i         if (this[i] === val)            has += 1;    }    return has;}Array.prototype.popRepeat = function(){    var arr = this, newArray = [], arrlen = arr.length, i = 0;    while (i         if (arr.hasOf(arr[i]) > 1) {            arr.splice(i, 1);            arrlen–;            if (newArray.indexOf(arr[i])                 newArray.push(arr[i]);        }        else {            i++;        }    }    return newArray;}/** * test */var array = [6, 4, 4, 'abc',function(){alert('abc')},4, 4, {a:1,b:3,c:5}, 3, 3, 7, 1, {a:1,b:2}, 3, 3, 3, 2, 2, 2, 2, 9, 99, 9, 9, 5, 5];var newArray=array.popRepeat();alert(array);alert(newArray);第二种方法

Array.prototype.include=function(object){for (var i=0;i{if (object==this[i])return true;}return false;}Array.prototype.uniq=function(){var temp=[];for (var i=0;i{if(!temp.include(this[i]))temp.push(this[i]);}return temp;}Array.prototype.selfUniq=function(){var temp=this.uniq();this.length=0;for (var i=0;i{this.push(temp[i]);}return this;}方法一:去重复数据


Array.prototype.distinct=function(){
var a=[],b=[];
for(var prop in this){
var d = this[prop];
if (d===a[prop]) continue; //防止循环到prototype
if (b[d]!=1){
a.push(d);
b[d]=1;
}
}
return a;
}
var x=['a','b','c','d','b','a','e','a','b','c','d','b','a','e'];
document.write(‘原始数组:’+x);
document.write(“
”);
document.write(‘去重复后:’+x.distinct());

方法二:取重复数据

Array.prototype.distinct=function(){
var a=[],b=[],c=[],d=[];
for(var prop in this){
var d = this[prop];
if (d===a[prop])
{
continue;
}//防止循环到prototype
if (b[d]!=1){
a.push(d);
b[d]=1;
}
else {
c.push(d);
d[d]=1;
}
}
//return a;
return c.distinct1();

}
Array.prototype.distinct1=function(){
var a=[],b=[];
for(var prop in this){
var d = this[prop];
if (d===a[prop]) continue; //防止循环到prototype
if (b[d]!=1){
a.push(d);
b[d]=1;
}
}
return a;
}
var x=['a','b','c','d','b','a','e','a','b','c','d','b','a','e','f','f','g'];
document.write(‘原始数组:’+x);
document.write(“
”);
document.write(‘去重复后:’+x.distinct());

基本操作ü

var a=new Array(“cctv”,”sxtv”,”tytv”);
var a=new Array(3);
var a=new Array();
a[0]=”cctv”;
a[1]=”sxtv”;
a[2]=”tytv”;
a[3]=”xzy”;
for(i=0;i<a.length;i++)
document.writeln(a[i]);

多维数组ü

var rows= new Array();
rows[0]=new Array(5);
rows[1]=new Array(5);
rows[0][0]=”你好”;
rows[0][1]=”邢志云”;
if(rows[0][0]!=null)
{
alert(rows[0][0]);
}

数组赋值
可以像上边那样简单的依次赋值,也可以像下边的这样:

var xzy=new Array();
xzy=[1,2,3,4,5,"邢志云","嘿嘿"];//给数组xzy赋值
for(var i=0;i<xzy.length;i++)
{
alert(xzy[i]);
}

也可以直接赋值成多维数组

var s=["你好",["中国","太原","邢志云"],[3,3333],[4,4444],[5,5555],["0",["a","b","c"]],”cc”];
//        0               1                   2       3        4             5            6
//                  10    11       12     20  21   30  31    40  41

alert(s);//你好,中国,太原,邢志云,3,3333,4,4444,5,5555
alert(s[1]);//中国,太原,邢志云
alert(s[1][2]);//邢志云
alert(s[2][0]);//3
alert(s[2][1]);//3333
alert(s[5][1][0]);//a
alert(s[5][1][2]);//c
alert(s[6]);//cc

push:数据可以向最后的追加元素
var arr=new Array()
arr[0]=”xbc1″;
arr[1]=”bcx2″;
arr[2]=”cctv3″;
arr[3]=”xctv4″;
arr.push(“邢志云”);//向最后追加,也可以同时push多个
arr.push(“0123″);
for(i=0;i<arr.length;i++)
{
if(arr[i]!=null)
document.writeln(arr[i]);
}
pop:弹出最后一个元素,后进先出
var arr=new Array();
var s;
arr[0]=”a1″;
arr[1]=”a2″;
arr[2]=”a3″;
arr[3]=”a4″;
s=arr.pop();//弹出最后一个元素,把值付给s,并删除最后一个元素
alert(s);
for(i=0;i<arr.length;i++)
{
document.writeln(arr[i]);
}
//显示: a1 a2 a3
unshift:插入到第一个之前,
var arr=new Array();
var s;
arr[0]=”a1″;
arr[1]=”a2″;
arr[2]=”a3″;
arr[3]=”a4″;
arr.unshift(“第一”,”第二”);//插到第一个元素之前,后面的整体后移
for(i=0;i<arr.length;i++)
{
document.write(arr[i]+”:”);
}
//显示: 第一:第二:a1:a2:a3:a4:
ü shift:弹出第一个元素,先进先出
var arr=new Array();
var s;
arr[0]=”a1″;
arr[1]=”a2″;
arr[2]=”a3″;
arr[3]=”a4″;
s=arr.shift();//弹出第一个元素,把值付给s,并删除第一个元素
alert(s);
for(i=0;i<arr.length;i++)
{
document.writeln(arr[i]);
}
//显示: a2 a3 a4
join:利用数组的join方法,连接所有的数组内容
数组的join(string val)可以将数组元素连接起来,并且用中间插入val,
当在网页上交互显示下拉框内容的时候可以将内容加载到数组内,再利用innerHTML将内容显示在出来

var a=new Array(“cctv”,”sxtv”,”tytv”);
var a=new Array(3);
var a=new Array();
a[0]=”cctv”;
a[1]=”sxtv”;
a[2]=”tytv”;
a[3]=”xzy”;
document.writeln(a.join(‘’));//如果直接用a.join(),则默认会用,分割

显示:
cctv
sxtv
tytv
xzy
用这种方式连接字符串要比 s=s+”ddd”快的多
sort:数组排序 (从小到大)
var arr=new Array(1000)
arr[0]=”xbc1″;
arr[1]=”bcx2″;
arr[2]=”cctv3″;
arr[5]=”xctv4″;
arr.sort();
for(i=0;i<arr.length;i++)
{
if(arr[i]!=null)
document.writeln(arr[i]);
}
reverse:数组反向,和sort配合使用能实现从大到小排序ü
var arr=new Array()
arr[0]=”a1″;
arr[1]=”a2″;
arr[2]=”a3″;
arr[3]=”a4″;
arr.push(“邢志云”);
arr.push(“0123″);
//arr.sort();
arr.reverse();//数组反向排列
for(i=0;i<arr.length;i++)
{
document.writeln(arr[i]);
}
//显示: 0123 邢志云 a4 a3 a2 a1
slice:数组截断后赋值给另外一个数组(不改变原始数组)
var xzy1=new Array();
xzy1=["a","b","c","hello","usa","eng"];
//     0   1   2     3      4     5
var xzy2=xzy1.slice(2,4);//从数组xzy1的2号元素开始到4号元素停止的值结束转成一个数组
for(var i=0;i<xzy2.length;i++)
{
document.write(xzy2[i]+”:”);//显示c hello
}
也可以这么写

var xzy1=new Array();
xzy1=["a","b","c","hello","usa","eng"];
//     0   1   2     3      4     5
var xzy2=Array.prototype.slice.call(xzy1,2,4);//从数组xzy1的2号元素开始到4号元素停止的值结束转成一个数组
for(var i=0;i<xzy2.length;i++)
{
alert(xzy2[i]);//显示c hello
}

splice:数组截断或清空(改变原始数组)ü
var arr=new Array();
var s;
arr[0]=”a1″;
arr[1]=”a2″;
arr[2]=”a3″;
arr[3]=”a4″;
arr[4]=”a5″;
arr[5]=”a6″;
var arr2=arr.splice(3,2,”x1″,”x2″);//从3号开始的2个元素,用x1和x2替换,并把替换下的值重新赋给数组arr2
//如果没有参数”x1″,”x2″,则对应的2个元素会从arr中删除,后面的前推
for(i=0;i<arr.length;i++)
{
document.write(arr[i]+”:”);//显示: a1:a2:a3:x1:x2:a6:
}
document.write(“”);
for(i=0;i<arr2.length;i++)
{
document.write(arr2[i]+”:”);//显示:  a4:a5:
}
利用splice来清空数组ü
var arr=new Array();
arr[0]=”a1″;
arr[1]=”a2″;
arr[2]=”a3″;
arr[3]=”a4″;
arr[4]=”a5″;
arr[5]=”a6″;
alert(arr.length);//显示6
arr.splice(0,100000000);//可以理解为把arr数组清空,又回到初始状态
alert(arr.length);//显示0
concat:数组连接ü
var arr=new Array();
var s;
arr[0]=”a1″;
arr[1]=”a2″;
arr[2]=”a3″;
arr[3]=”a4″;
arr[4]=”a5″;
arr[5]=”a6″;
var arr2=["b1","b2","b3"];
var arr3=arr.concat(arr2);
for(i=0;i<arr3.length;i++)
{
document.write(arr3[i]+”:”);//显示: a1:a2:a3:a4:a5:a6:b1:b2:b3:
}
使用Mapü
map1:

var map = {};
map["张三"] = “1362348754″;
map["李四"] = “0351-98476345″;
map["王五"] = “0358-4873622″;
alert(map["李四"]);

用map={}就可以把map清空;
map2:

var map = new Array();
map["张三"] = “1362348754″;
map["李四"] = “0351-98476345″;
map["王五"] = “0358-4873622″;
alert(map["李四"]);//显示:0351-98476345
alert(map.length);//这里map.length显示为0
map[0] = “0358-4873622″;
map[1] = “0358-4873622″;
map[2] = “0358-4873622″;
alert(map.length);//这里map.length显示为3
for(var i=0;i<map.length;i++)
{
document.write(map[i]);
}
alert(map["李四"]);//显示:0351-98476345

map3:
var map={“姓名”:”邢志云”,”性别”:”男”,”年龄”:34}
map.婚否=”已婚”;//可以动态添加
eval(“map.国籍=’中华’”);//但map.后面的标识符只能是以字符开头的,并且不能有-所以全球标识符不宜用在这里
alert(map.国籍);
//alert(map.姓名);//邢志云
//alert(map.年龄);//34
map["民族"]=”汉族”;//也可以像第一条中那样赋值,但这种可以用任意串做键,如: map["1-2"]=”汉族”;alert(map.姓名+”:”+map["1-2"]);//也能正常显示
alert(map.姓名+”:”+map.民族);
for(var colname in map)
{
alert(colname );//姓名 性别 年龄 婚否
}
for(var colname in map)
{
alert(map[colname]);//邢志云 男 34 已婚
}
还可以这样
var s=”‘姓名’:'邢志云’,'性别’:'男’,35:’年龄’”;
eval(“var map={“+s+”}”);
alert(map["姓名"]);
或者
var s=”姓名:’邢志云’,性别:’男’,35:’年龄’”;
eval(“var map={“+s+”}”);
alert(map["姓名"]);
还可以嵌套
var map=
{
“人员”:
{
“张三”:”男”
,”赵六”:”女”
}
,”车辆”:
{
“桑塔纳”:”6万”
,”别克”:”10万”
}
,”年龄”:34
}
alert(map.人员.赵六);//女
alert(map.车辆.桑塔纳);//6万
使用自定义的属性的数组
var a=new Array();
a[0]={};
a[0].姓名=”邢志云”;
a[0].年龄=32;

a[1]={};
a[1].姓名=”李四”;
a[1].年龄=28;
for(var i=0;i<a.length;i++)
{
alert(a[i].姓名+”:”+a[i].年龄);
}

 

 

请给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。这是我的答案:
新解

Array.prototype.uniq = function(){
var resultArr = [],
returnArr = [],
i = 1,
origLen = this.length,
resultLen;
function include(arr, value){
for (var i=0, n=arr.length; i<n; ++i){
if (arr[i] === value){
return true;
}
}
return false;
}
resultArr.push(this[0]);
for (i; i<origLen; ++i){
if (include(resultArr, this[i])){
returnArr.push(this[i]);
} else {
resultArr.push(this[i]);
}
}
resultLen = resultArr.length;
this.length = resultLen;
for (i=0; i<resultLen; ++i){
this[i] = resultArr[i];
}
return returnArr;
}

var arr=new Array(1,2,22,3,5,3,2,6,3);
求出这数组中2的个数。

function count(arr,element){    var count=0;    for(var i=0;i        if(arr[i]==element)count++;    }    alert(arr+”中.\n”+element+”的个数为:”+count);}var arr = new Array(1,2,22,3,5,3,2,6,3);count(arr,2); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值