搜索
您的当前位置:首页正文

js中更短的Array类型转换_javascript技巧

2023-12-03 来源:欧尚宠物网

当时我在分享会,想试试,但身边没有电脑。今天打开 Firebug 的那一瞬间,突然记起这事。马上试了一下之前想的一个方案。可以!代码如下: 代码如下: function a(){ var arr = Array(arguments); alert(arr instanceof Array); } a('b'); 在看 Baidu Tangram 的时候,最常看到的是 String('a string'),不像其实地方的用法,是使用与一个空字符串字面量相加来强制类型转换。当时,就想到了如果 Array() 可以实现,那不是更爽?当然。而这是为什么呢?可以看一下这个打印出来的日志: 代码如下: console.log(Array,[],Array(),new Array()) // => [undefined] [] [] [] console.log(Array('sofish'), ['sofish'], new Array('sofish')) // => ["sofish"] ["sofish"] ["sofish"]有趣吧。其实像 new Array() 可以省去 new,变成 Array(),都是创建一个空数组实例。 至于用那种方法好,我也遇到的情况并不多,不能说明什么状态。类型的转换我们需要常用到的,还需要去做更深层的研究。而像第一种做法,至少可是很多现在流行的框架使用的方法。一般情况下都用在于把 function 的 arguments 对象转换为数组来让我们可以对其做更多的事。如果你想使用的话,保险的用法还是用第一种。

小编还为您整理了以下内容,可能对您也有帮助:

JS Array(数组)所有操作方法,改变数组方法、不改变数组方法

定义:返回由所有参数值组成的数组,如果没有参数,就返回一个空数组。

目的:Array.of() 出现的目的是为了解决上述构造器因参数个数不同,导致的行为有差异的问题。

参数:

第一个参数(必需):要转化为真正数组的对象。

第二个参数(可选): 类似数组的map方法,对每个元素进行处理,将处理后的值放入返回的数组。

第三个参数(可选): 用来绑定this。

ps:splice方法从数组中添加/删除项目,然后返回被删除的项目

语法: array.splice(index,howmany,item1,.....,itemX)

参数:

index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。

howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。

item1, …, itemX: 可选。向数组添加的新项目。

返回值: 如果有元素被删除,返回包含被删除项目的新数组。

删除元素

删除并添加

不删除只添加

ps:方法接受两个参数,一个从哪里开始,一个是到哪里结束(但是不包括这个结束的元素本身)。如果是负数,就从倒数第几个。

参数可选: 规定排序顺序的比较 函数 。

默认情况下sort()方法没有传比较函数的话,默认按字母升序,如果不是元素不是字符串的话,会调用toString()方法将元素转化为字符串的Unicode(万国码)位点,然后再比较字符。

比较函数的两个参数

sort的比较函数有两个默认参数,要在函数中接收这两个参数,这两个参数是数组中两个要比较的元素,通常我们用 a 和 b 接收两个将要比较的元素:

sort排序常见用法

数组元素为数字的升序、降序:

数组多条件排序

自定义比较函数

定义: 在当前数组内部,将指定位置的成员复制到其他位置,并返回这个数组。

语法: array.copyWithin(target, start = 0, end = this.length)

参数:

三个参数都是数值,如果不是,会自动转为数值.

target(必需):从该位置开始替换数据。如果为负值,表示倒数。

start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示倒数。

end(可选):到该位置前停止读取数据,默认等于数组长度。使用负数可从数组结尾处规定位置。

浏览器兼容(MDN): chrome 45,Edge 12,Firefox32,Opera 32,Safari 9, IE 不支持

从上述例子:

第一个参数是开始被替换的元素位置

要替换数据的位置范围:从第二个参数是开始读取的元素,在第三个参数前面一个元素停止读取

数组的长度不会改变

读了几个元素就从开始被替换的地方替换几个元素

参数:

第一个元素(必须): 要填充数组的值

第二个元素(可选): 填充的开始位置,默认值为0

第三个元素(可选):填充的结束位置,默认是为this.length

使用join方法或者下文说到的toString方法时,当数组中的元素也是数组或者是对象时会出现什么情况?

join()/toString()方法在数组元素是数组的时候,会将里面的数组也调用join()/toString(),如果是对象的话,对象会被转为[object Object]字符串。

如上述栗子:调用数组的toLocaleString方法,数组中的每个元素都会调用自身的toLocaleString方法,对象调用对象的toLocaleString,Date调用Date的toLocaleString。

该方法的效果和join方法一样,都是用于数组转字符串的,但是与join方法相比没有优势,也不能自定义字符串的分隔符,因此不推荐使用。

ps:当数组和字符串操作的时候,js 会调用这个方法将数组自动转换成字符串

ps:字符串也有一个slice() 方法是用来提取字符串的,不要弄混了。

参数:

begin(可选): 索引数值,接受负值,从该索引处开始提取原数组中的元素,默认值为0。

end(可选):索引数值(不包括),接受负值,在该索引处前结束提取原数组元素,默认值为数组末尾(包括最后一个元素)。

如上:新数组是浅拷贝的,元素是简单数据类型,改变之后不会互相干扰。

如果是复杂数据类型(对象,数组)的话,改变其中一个,另外一个也会改变

原因在定义上面说过了的:slice()是浅拷贝,对于复杂的数据类型浅拷贝,拷贝的只是指向原数组的指针,所以无论改变原数组,还是浅拷贝的数组,都是改变原数组的数据。

ES6扩展运算符...合并数组:

因为ES6的语法更简洁易懂,所以现在合并数组我大部分采用...来处理,...运算符可以实现cancat的每个栗子,且更简洁和具有高度自定义数组元素位置的效果。

参数:

searchElement(必须):被查找的元素

fromIndex(可选):开始查找的位置(不能大于等于数组的长度,返回-1),接受负值,默认值为0。

严格相等的搜索:

数组的indexOf搜索跟字符串的indexOf不一样,数组的indexOf使用严格相等===搜索元素,即数组元素要完全匹配才能搜索成功。

注意:indexOf()不能识别NaN

参数:

searchElement(必须): 被查找的元素

fromIndex(可选): 逆向查找开始位置,默认值数组的长度-1,即查找整个数组。

关于fromIndex有三个规则:

正值。如果该值大于或等于数组的长度,则整个数组会被查找。

负值。将其视为从数组末尾向前的偏移。(比如-2,从数组最后第二个元素开始往前查找)

负值。其绝对值大于数组长度,则方法返回 -1,即数组不会被查找。

参数:

searchElement(必须):被查找的元素

fromIndex(可选):默认值为0,参数表示搜索的起始位置,接受负值。正值超过数组长度,数组不会被搜索,返回false。负值绝对值超过长数组度,重置从0开始搜索。

includes方法是为了弥补indexOf方法的缺陷而出现的:

indexOf方法不能识别NaN

indexOf方法检查是否包含某个值不够语义化,需要判断是否不等于-1,表达不够直观

在js中调用java 函数返回类型为arraylist ,在js中怎样转换为array数组类型呢

jsList这个为你的arrylist

<script type="text/javascript">

function initPages()

{

var codes = new Array();

// 将JAVA中的数组转换成JS 的数组

<%

if(jsList!=null)

{

for(int i=0;i<jsList.size();i++)

{

%>

codes[<%=i%>]='<%=jsList.get(i)%>';

<% }

}

%>

</script>

在js中调用java 函数返回类型为arraylist ,在js中怎样转换为array数组类型呢

js中只有var类型,不分到低时数组还是其他的类似java中的String,int等类型,如果js要获取ava中的数组就是用json吧.

java代码中把集合转成json:

@RequestMapping(value = "/slick/home")

public void homePage(HttpServletResponse response) throws IOException {

String json = null;

response.setContentType("application/json");

PrintWriter out = response.getWriter();

Gson gson = new GsonBuilder().serializeNulls().setDateFormat(DateFormat.LONG)

.setPrettyPrinting().setVersion(1.0).create();

List<Integer> list = new ArrayList<Integer>();

for (int i = 0; i < 10; i++) {

list.add(i);

}

JSONArray ja = JSONArray.fromObject(mes);

json = gson.toJson(ja.toString());

out.print(json);

}

js中解析的代码:

function tested(){

jQuery.getJSON("${path}/slick/home?time="+new Date().getTime(),

function(items){

var output = [];

output.push('<option value="">-请选择-</option>');

jQuery.each(items, function(i,item){

output.push('<option value="'+ item +'">'+ item +'</option>');

});

$('#'+nextUnit).html(output.join(''));

$('#'+nextUnit).css('display','');

});

}

如何将javascript中uint8array转成普通数组或字符串

Uint8Array对象,8位无符号整数值的类型化数组。内容将初始化为 0。如果无法分配请求数目的字节,则将引发异常。

转换成普通数组的方法:

1、构造
uint8Array = new Uint8Array( length );

2、转换方法:
(1) var array = Array.from(uint8Array)
(2)var array = [].slice.call(uint8Array)

注意事项:

//js往ble写数据的时候,数据类型是arraybuffer类型。在Uint8Array组好数据之后,如果用了

subarray方法,要当心。//subarray返回的Uint8Array.buffer后的内存是subarray前的那片内

存。//如果要新传数据,最好新开辟内存,避免看到的和测到的不一样,产生问题。

如何将javascript中uint8array转成普通数组或字符串

Uint8Array对象,8位无符号整数值的类型化数组。内容将初始化为 0。如果无法分配请求数目的字节,则将引发异常。

转换成普通数组的方法:

1、构造
uint8Array = new Uint8Array( length );

2、转换方法:
(1) var array = Array.from(uint8Array)
(2)var array = [].slice.call(uint8Array)

注意事项:

//js往ble写数据的时候,数据类型是arraybuffer类型。在Uint8Array组好数据之后,如果用了

subarray方法,要当心。//subarray返回的Uint8Array.buffer后的内存是subarray前的那片内

存。//如果要新传数据,最好新开辟内存,避免看到的和测到的不一样,产生问题。

javascript使用怎么给数组

1.首先需要声明和创建一个索引变量,并且必须解决数组在该索引处的值。

2.这种结构更短,并且具有更清楚的意图,从列表中检索每个颜色而不必解决列表的位置。

3.另一方面,使用in关键字将返回数组的索引键。

4.将类似数组的对象转换为JavaScript数组如果不得不处理网页,用来检索特定的元素,像document.getElementsByClassName()这样的函数的结果是类似数组的,包含了所有指定 class 名称的子元素,但不是严格的数组。ES6新特性中Array 类多了一个静态方法 from ,这个方法作用是将个 ArrayLike 对象或者 Iterable 对象转换成一个Array ,所谓 ArrayLike 对象指具有数组某些行为的对象。

5.使用静态Array.isArray()函数。

6.在大多数情况下,只要接口暴露出长度属性,就应该可以将其转换为数组。 还可以用于将字符串转换为字符数组。 注意,Array.from(str)在功能上等同于str.split(""),虽然可能不够快。在这个例子中,strReverse()函数使用from()将一个字符串转换成一个字符数组,然后使用Array reverse()函数来反转顺序,接着是将数组转换为字符串的join("")函数。

在JavaScript中如何将ArrayBuffer转换为Float64Array?

var arrayBuffer = new ArrayBuffer(64);
var view = new Float64Array(arrayBuffer);

如上 直接将ArrayBuffer作为参数构造出Float64Array

在JavaScript中如何将ArrayBuffer转换为Float64Array?

var arrayBuffer = new ArrayBuffer(64);
var view = new Float64Array(arrayBuffer);

如上 直接将ArrayBuffer作为参数构造出Float64Array

js中平级数组和树形结构数据相互转换

在实际的工作和业务需求中,我们经常会碰到树形数据结构,比如公司组织架构、组织层级、省市县或者事物的分类等等数据。那么在JavaScript中如何将数组转为树形结构和树形结构转为数组,本文就详细的来探究一下。

先来看看给出了一组怎样的数据,转换为怎样的树形结构。

后台接口返回或者面试官给你的数据:

期望的处理后的数据:

如果后台给了一个这样的数据说让前端自己去转换为树形结构或者面试官给你一组这样的数据让你手写一个转换方法,你会怎么处理?

1、递归实现

2、Map对象实现

3、filter实现

这种方法很有意思,可能大多数人想不到,也是从大佬处学到的(读书人的是怎么能叫抄呢,应该叫“窃”)。

1、rece取树行数据的所有子集

2、递归实现

3、广度优先遍历法

js如何将一个数组对象转换成另外一种格式的数组对象

var arr = ["中国|广东|深圳","中国|广东|深圳","中国|湖北|黄石","中国|湖北|武汉","中国|广东|广州","中国|广东|广州","中国|湖北|武汉","中国|福建|福州","中国|福建|厦门"];

        var result={};

        var temp={};

        for(var i=0;i<arr.length;i++){

            var item=arr[i];

            var its=item.split('|');//按|拆分

            var country=its[0];//国家

            var province=its[1];//省

            var city=its[2];//城市

            if(!result[country]){//国家不在结果对象里

                result[country]=[];//添加

            }

            if(!temp[province]){//临时对象没有省信息

                result[country].push(temp[province]={//记入结果数组

                    province:[province],

                    city:[],

                    count:[]

                });

            }

            var info=temp[province];

            var found=false;

            for(var j=info.city.length-1;j>=0;j--){//在省信息的城市数组里查找是否已经存在

                if(info.city[j]==city){

                    found=true;//已经存在

                    info.count[j]=info.count[j]+1;//更新count

                }

            }

            if(!found){//未找到城市

                info.city.push(city);//添加

                info.count.push(1);//count初始值为1

            }

        }

        console.log(result);

欧尚宠物网还为您提供以下相关内容希望对您有帮助:

JS Array(数组)所有操作方法,改变数组方法、不改变数组方法

参数: 第一个参数(必需):要转化为真正数组的对象。 第二个参数(可选): 类似数组的map方法,对每个元素进行处理,将处理后的值放入返回的数组。 第三个参数(可选): 用来绑定this。ps:splice方法从数组中添加...

js怎么将var arr=["1","2","3"] 转换成 ["1","2"] ["1","3"] ["2...

var arr=["1","2","3"];brr=[];for(var i=0;i&lt;arr.length-1;i++){for(var j=i+1;j&lt;arr.length;j++){brr.push([arr[i],arr[j]]); }}brr;

如何将javascript中uint8array转成普通数组或字符串?

1、构造uint8Array = new Uint8Array( length );2、转换方法:(1) var array = Array.from(uint8Array)(2)var array = [].slice.call(uint8Array)注意事项://js往ble写数据的时候,数据类型是arraybuffer类型。...

...类型为arraylist ,在js中怎样转换为array数组类型呢

function initPages(){ var codes = new Array();// 将JAVA中的数组转换成JS 的数组 &lt; if(jsList!=null){ for(int i=0;i&lt;jsList.size();i++){ &gt; codes[&lt;%=i%&gt;]='&lt;%=jsList.get(i)%&gt;';&lt;% ...

javascript使用怎么给数组

1.首先需要声明和创建一个索引变量,并且必须解决数组在该索引处的值。2.这种结构更短,并且具有更清楚的意图,从列表中检索每个颜色而不必解决列表的位置。3.另一方面,使用in关键字将返回数组的索引键。4.将类似数组的...

JS里面怎么把一个数组转化成字符串

1、先用js定义一个变量,就是一个字符串的变量,如图,字符串用逗号隔开。2、要把字符串转化成数据,我们可以使用JS内置的方法,split方法就行了,这个方法要注意的地方,就是参数,由于字符串是用逗号隔开的,参数就输入...

js如何将一个数组对象转换成另外一种格式的数组对象

var temp={}; for(var i=0;i&lt;arr.length;i++){ var item=arr[i]; var its=item.split('|');//按|拆分 var country=its[0];//国家 var province=its[1];//省 var city=its[2];/...

JS的类型怎么转换

JavaScript 为我们提供了严格比较与类型转换比较两种模式,严格比较(===)只会在操作符两侧的操作对象类型一致,并且内容一致时才会返回为 true,否则返回 false。而更为广泛使用的 == 操作符则会首先将操作对象转化为相同类型,再进行比较。

在JavaScript中如何将ArrayBuffer转换为Float64Array?

var arrayBuffer = new ArrayBuffer(64);var view = new Float64Array(arrayBuffer);如上 直接将ArrayBuffer作为参数构造出Float64Array

使用JS将Object转Array

Object转Array有多种方式,可以使用 Object.entries() ,Object.keys(),Object.values()MDN解释:Object.entries() 返回一个给定对象自身可枚举属性的键值对数组 Object.keys() 返回一个由一个给定对象的自身可枚举属性组成的...

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

Top