引用类型(数组)

本文介绍了JavaScript中数组的基本创建方法及各种实用的操作技巧,包括数组的增删改查、排序、反转等功能,帮助开发者更好地理解和使用JavaScript数组。

Array

创建数组的方法基本上有两种

1、使用Array构造函数

var arr=new Array();

var arr1=new Array(10);//创造了一个length为10的数组
var arr2=new Array("a","b","c");//创造了一个长度为3的,内容为a,b,c三个字符串的数组

2、使用字面量表示法

var arr3=["a","b","c"]; //内容等同于arr2
var arr4=[, , ,]//创建了长度为34的数组内容为空

我们可以通过索引值访问到数组中的值

var arr=["a","b","c","d"];
alert(arr[0])  //a

索引永远是从0开始的,也就是数组的是0,1,2,3,4,5…..以此类推,索引0是第1个值

数组的方法

所有对象都具有toLocaleString()、toString()、valueOf()方法。数组的toString方法会返回每个值的字符串形式拼接而成的一个以逗号分隔的字符串。而valueOf()方法调用的时候会先使用一边toString()方法

var arr=["apple","banana","cat","dog"];
console.log(arr.toString());//apple,banana,cat,dog
console.log(arr.valueOf());//apple,banana,cat,dog
console.log(arr.toLocaleString());//apple,banana,cat,dog

数组的join()方法

这个方法是使数组分割成字符串的时候,以选定的分隔符分割

var arr=["apple","banana","cat","dog"];
console.log(arr.join("||"));//apple||banana||cat||dog
console.log(arr.join("\t xss"));//apple  xssbanana   xsscat  xssdog

数组的push和pop方法(模拟栈)

push()方法可以接收任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度。而pop()方法则从末尾移除最后一项,减少数组的length值

var arr=new Array();
var count=arr.push("apple","banana");
    alert(arr.length);//2
    console.log(count);//2
    arr.push("cat");
    console.log(arr.length)//3
    var i=arr.pop();
    console.log(i);//cat

数组的shift()方法(模拟队列先进先出)

var arr=new Array()
arr.push("apple","blue");
var item=arr.shift();
console.log(item);//apple

数组的unshift()方法,下面的例子模仿向前添加项,从后的删除项

var arr=new Array()
arr.unshift("apple","blue","cat");
arr.unshift("dog");
var item=arr.pop();
console.log(item);

数组反转方法 reverse()方法

var arr=[1,2,3,4,5];
console.log(arr.reverse());//5,4,3,2,1;

数组排序方法 sort()方法

*该方法默认情况下,按照toString()转型方法后得到的字符串排序也就是说

var arr=[0,1,5,10,15];
arr.sort(); 
console.log(arr)//0,1,10,15,5;

*但是呢 sort()方法可以接收一个函数作为参数

//比较函数(从小到大)
function compare(a,b){
        if (a>b) {
            return 1;
        }else if(a<b){
            return -1;
        }else{
            return 0;
        }
    }

数组的concat()方法

此方法不改变原始数组的值,而是返回一个修改后的值
如下

    var arr1=["apple","boy","cat"];
    var arr2=arr1.concat("dog",["egg","flag"]);
    console.log(arr1);//apple boy cat
    console.log(arr2);//apple boy cat dog egg flag

数组的slice()方法

该方法可以接收两个参数,只有一个参数的话返回从该索引到最后一个所有的所有值
两个参数的话返回该所以到第二个参数的位置的值

例:

var arr=["apple","boy","cat","dog","egg"];
var arr1=arr.slice(2);
console.log(arr1);//cat dog egg
var arr2=arr.slice(1,3);
console.log(arr2);//boy cat 

*数组的splice()方法

该方法有删除,插入,替换三种功能

var arr=["apple","boy","cat","dog"];
//删除
var remove =arr.splice(0,1);
console.log(remove);/apple
console.log(arr);boy cat dog
//插入
var remove2=arr.splice(3,0,"egg")
console.log(arr)//boy cat dog egg;
//替换
var remove3=arr.splice(3,1,"exp");
console.log(arr)//boy cat dog exp;

indexOf() 方法 和lastIndexOf()方法

这个两个方法都是数组的位置方法,第一个是从索引0向后查找,第二个是从后往索引0的位置开始查找;一旦查找到第一个则返回这个参数在数组中的位置的索引值,若数组中没有该值则返回-1;

var arr=new Array();
    arr=["apple","boy","cat","cat","dog","apple","boy","cat","dog"];
    console.log(arr.indexOf("cat"));//2
    console.log(arr.lastIndexOf("cat"));// 7
    console.log(arr.indexOf("egg");//-1
### Java 中引用类型数组与基本数据类型数组的区别 #### 定义与声明 在Java中,基本数据类型和引用数据类型的数组有着不同的特性和行为。对于基本数据类型数组而言,其元素直接保存数值;而对于引用类型数组,则是存储指向对象的引用。 ```java // 基本数据类型数组 int[] basicArray = new int[5]; // 引用类型数组 String[] referenceArray = new String[5]; ``` 当创建一个基本数据类型数组时,实际上是在内存中分配了一块连续的空间用于存放具体的值[^1]。而引用类型数组则会为每一个位置预留空间用来放置对象实例的地址或引用[^2]。 #### 参数传递差异 考虑函数调用过程中参数传递的情况: - **基本数据类型** 当把基本数据类型作为方法参数传递给另一个方法时,实际上传递的是该变量的一个副本而不是原始变量本身。因此,在被调用的方法内部对该参数所做的任何修改都不会影响到原变量。 - **引用数据类型** 对于引用类型来说,情况有所不同。如果将引用类型数组作为参数传递给某个方法,那么这个方法接收到的就是原来那个数组对象的引用。这意味着在这个方法内对数组内容做出的变化会影响到原来的数组对象。 ```java public class ArrayPassingExample { public static void changeBasicTypeValue(int value){ value += 10; System.out.println("Inside method, changed value is:" + value); } public static void changeReferenceTypeValue(Integer[] array){ array[0] = 999; System.out.println("Inside method, first element of the array has been set to: " + array[0]); } } ``` 上述例子展示了两种不同类型的数据如何通过方法调用受到影响的不同方式。`changeBasicTypeValue()` 方法不会改变外部 `value` 的值,但是 `changeReferenceTypeValue()` 可以更改传入整数数组的第一个元素并反映在外层作用域中。 #### 使用场景分析 选择使用哪种类型的数组取决于具体的应用需求和技术考量: - 如果只需要简单地存储一系列相同类型的数值,并且不需要复杂的功能(比如动态调整大小),那么基本数据类型数组可能是更好的选择因为它更加轻量级。 - 若涉及到更为复杂的逻辑运算或是需要利用面向对象特性的地方——例如要管理多个字符串或其他自定义的对象集合——此时应该优先选用引用类型数组[^3]。 此外,考虑到性能因素以及垃圾回收机制的影响,合理规划这两种类型之间的转换也是非常必要的。特别是要注意自动拆箱/装箱可能带来的潜在风险,即从包装器类向基础类型转变的过程中可能出现空指针异常等问题[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值