JavaScript -------- 数组1

news/2024/7/4 1:39:39

一、创建数组

通过 [] 操作符声明一个数组变量:

var numbers = [ ]

得到一个长度为0的空数组。 可以通过内建的length属性    console.log(numbers.length)    // 0

在声明数组变量时,直接在 [ ] 操作符中放入一组元素;

var numbers = [1, 2, 3, 4,5 ]

console.log(numbers.length) // 5

还可以

var numbers = new Array(); 

console.log(numbers.length)  // 0

同样也可以传入一组元素作为数组的初始值;

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

console.log(numbers.length)  // 5

也可以在调用 Array的构造函数时,可以只传入一个参数,用来指定数组的长度

var numbers = new Array(10); 

console.log(numbers.length)  // 10

在 脚本语言里很常见的一个特性是,数组中的元素不必是同一种数据类型,这一点和很多编程语言不同,

var objects = [1, "Joe",true, null];

可用Array.isArray() 来判断一个对象是否为数组,

var numbes = 2;

var arr = [1, 2,3, 4,45,566,];

console.log( Array.isArray(numbers) ) ; // 显示 false

console.log( Array.isArray(arr) ) ; // 显示 true

创建数组的几种方式 ,大多数js 专家推荐使用 [ ] 操作符;

 

2 读写数组

 可用使用 [ ] 操作符将数据赋给数组 比如 将1-100的数字赋给一个数组

var nums = [ ];

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

      nums[i] = i+1;

}

还可以用 [ ] 操作符读取数组中的元素;

var nums = [ 1 ,2 ,3 ,4,5]

var sum = nums [0] + nums [1] + nums [ 2]  + nums [3]  + nums [4]

console.log(sum)  //  15

 

3 由字符串生成数组

 调用字符串对象的split()方法也可以生成数组,该方法同过一些常见的分隔符,将一个字符串分成几部分,并将每个部分作为一个元素保存于一个新建的数组中,

 

var sentence = "the quick brown fox jumped over the lazy dog";
var words = sentence.split(" ");
for (var i = 0; i < words.length; ++i) {
      console.log("word " + i + ": " + words[i]);
}

输出为:
word 0: the
word 1: quick
word 2: brown
word 3: fox
word 4: jumped
word 5: over
word 6: the
word 7: lazy
word 8: dog
 

4 对数组的整体性操作
 

有几个操作是将数组作为一个整体进行的,

将一个数组赋给另外一个数组:

var nums = [];
for (var i = 0; i < 10; ++i) {
    nums[i] = i+1;
}

var samenums = nums;


当把一个数组赋给另外一个数组时, 只是为被赋值的数组增加了一个新的引用。 当你通过原引用修改了数组的值, 另外一个引用也会感知到这个变化。
var nums = [];
for (var i = 0; i < 100; ++i) {
   nums[i] = i+1;
}

var samenums = nums;
nums[0] = 400;
console.log(samenums[0]); // 显示 400

这种行为被称为浅复制, 新数组依然指向原来的数组。
 

更好的方案是使用深复制, 将原数组中的每一个元素都复制一份到新数组中。

function copy(arr1, arr2) {
     for (var i = 0; i < arr1.length; ++i) {
            arr2[i] = arr1[i];
      }
}
 

var nums = [];
for (var i = 0; i < 100; ++i) {
       nums[i] = i+1;
}

var samenums = [];
copy(nums, samenums);
nums[0] = 400;
console.log(samenums[0]); // 显示 1

 

print() 函数, 用它可以显示数组里的元素。
 

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

二   存取函数

1. 查找元素

indexOf() 函数是最常用的存取函数之一, 用来查找传进来的参数在目标数组中是否存在。如果目标数组包含该参数, 就返回该元素在数组中的索引; 如果不包含, 就返回 -1。
 

var names = ["David", "Cynthia", "Raymond", "Clayton", "Jennifer"];
 

var name = ' Raymond '

var position = names.indexOf(name);

if(position >= 0){

      console.log(name + '有有有')

}else{

      console.log(name + '没有没有')

}

输出为 Raymond有有有

 

如果数组中包含多个相同的元素,indexOf()函数总是返回第一个与参数相同的元素的索引。另外有一个功能与之类似的函数  lastIndexOf(),该函数返回相同元素中的最后一个元素的索引,如果没有找到相同的元素,返回-1,

var names = ["David", "Mike", "Cynthia", "Raymond", "Clayton", "Mike", "Jennifer"];
var name = "Mike";
var firstPos = names.indexOf(name);
 console.log(name + "有有有"+firstPos );   ///  Mike有有有1
var lastPos = names.lastIndexOf(name);
 console.log(name + "有有有" + lastPos);  Mike有有有5

2、数组的字符串表示

有两个方法可以将数组转化为字符串: join()和 toString()。这两个方法都返回一个包含数组所有元素的字符串,各个元素之间用逗号分隔开。

var names = ["David", "Cynthia", "Raymond", "Clayton", "Mike", "Jennifer"];


var namestr = names.join();
console.log(namestr); // David,Cynthia,Raymond,Clayton,Mike,Jennifer


namestr = names.toString();
console.log(namestr); // David,Cynthia,Raymond,Clayton,Mike,Jennifer

 

3.由已有数组创建新数组

concat() 和 splice()方法允许通过已有数组创建新数组。

concat方法可以合并多个数组创建一个新数组。

splice方法截取一个数组的子集创建一个新数组。

 

concat()  方法

var cisDept = ["Mike", "Clayton", "Terrill", "Danny", "Jennifer"];
var dmpDept = ["Raymond", "Cynthia", "Bryan"];


var itDiv = cisDept .concat(dmpDept ); 
console.log(itDiv); //   [Mike,Clayton,Terrill,Danny,Jennifer,Raymond,Cynthia,Bryan] 首先输出 cisDept 数组里的元素


itDiv = dmpDept .concat(cisDept);
console.log(itDiv); // [ Raymond,Cynthia,Bryan,Mike,Clayton,Terrill,Danny,Jennifer] 首先输出 dmpDept 数组里的元素。
 

splice() 方法从现有数组里截取一个新数组。 该方法的第一个参数是截取的起始索引, 第二个参数是截取的长度。
 

var cisDept = ["Mike", "Clayton", "Terrill", "Danny", "Jennifer"];

var dmp = cisDept.splice(1,1)

console.log(dmp ) //  [Clayton]  

console.log(cisDept ) //  ["Mike",  "Terrill", "Danny", "Jennifer"]; 删除数组

splice() 方法还有其他用法, 比如为一个数组增加或移除元素,

cisDept.splice(2,0,"hhhhh")

console.log(cisDept) // ["Mike", "Clayton","hhhhh", "Terrill", "Danny", "Jennifer"];

 

可变函数

1 为数组添加元素
 

有两个方法可以为数组添加元素: push() 和 unshift()。

push() 方法会将一个元素添加到数组末尾:
var nums = [1,2,3,4,5];
console.log(nums); // [1,2,3,4,5]
nums.push(6);
console.log(nums); //  [1,2,3,4,5,6]

也可以使用数组的 length 属性为数组添加元素, 但 push() 方法看起来更直观:
var nums = [1,2,3,4,5];
console.log(nums); // [1,2,3,4,5]
nums[nums.length] = 6;
console.log(nums); //  [1,2,3,4,5,6]]

unshift() 方法可以将元素添加在数组的开头,
var nums = [2,3,4,5];
nums.unshift(1);
console.log(nums); // [1,2,3,4,5]

nums.unshift(1,2,3,3);

console.log(nums); // [1,2,2,3,3,3,4,5]

2 从数组中删除元素

pop() 方法可以删除数组末尾的元素:


var nums = [1,2,3,4,5,9];
nums.pop();
console.log(nums); // [1,2,3,4,5];

shift() 方法可以删除数组的第一个元素


var nums = [9,1,2,3,4,5];
nums.shift();
console.log(nums); // [1,2,3,4,5];

 

pop() 和 shift() 方法都将删掉的元素作为方法的返回值返回, 因此可以使用一个变量来保存删除的元素:
 

var nums = [1,2,3,4,5,9];

var a = nums.pop();

var b = nums.shift();

console.log(a); // [9];

console.log(b); // [1];

3 从数组中间位置添加和删除元素

使用 splice() 方法为数组添加元素, 需提供如下参数:
• 起始索引(也就是你希望开始添加元素的地方) ;
• 需要删除的元素个数(添加元素时该参数设为 0) ;
• 想要添加进数组的元素。
 

var nums = [1,2,3,7,8,9];
var newElements = [4,5,6];
nums.splice(3,0,newElements);
console.log(nums); //[ 1,2,3,4,5,6,7,8,9]

要插入数组的元素不必组织成一个数组, 它可以是任意的元素序列, 比如:

var nums = [1,2,3,7,8,9];
nums.splice(3,0,4,5,6);
console.log(nums); //[ 1,2,3,4,5,6,7,8,9]

使用 splice() 方法从数组中删除元素的例子:
var nums = [1,2,3,100,200,300,400,4,5];
nums.splice(3,4);
console.log(nums); //[ 1,2,3,4,5]

4 为数组排序


 reverse() 该方法将数组中的元素的顺序进行翻转。

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

 sort()  如果元素是字符串类型, 那么数组的可变方法sort() 就非常好使

var names = ["David","Mike","Cynthia","Clayton","Bryan","Raymond"];
names.sort();
console.log(names); // [Bryan,Clayton,Cynthia,David,Mike,Raymond]

数组元素是数字类型, sort() 方法的排序结果就不能让人满意了:
var nums = [3,1,2,100,4,200];
nums.sort();
console.log(nums); // [1,100,2,200,3,4]

sort() 方法是按照字典顺序对元素进行排序的, 因此它假定元素都是字符串类型, 在上一个例子中, 即使元素是数字类型, 也被认为是字符串类型。 为了让 sort() 方法也能排序数字类型的元素, 可以在调用方法时传入一个大小比较函数, 排序时, sort() 方法将会根据该函数比较数组中两个元素的大小, 从而决定整个数组的顺序。对于数字类型, 该函数可以是一个简单的相减操作, 从一个数字中减去另外一个数字。 如果结果为负, 那么被减数小于减数; 如果结果为 0, 那么被减数与减数相等; 如果结果为正, 那么被减数大于减数。将这些搞清楚之后, 传入一个大小比较函数, 再来看看前面的例子:
function compare(num1, num2) {
        return num1 - num2;
}

var nums = [3,1,2,100,4,200];
nums.sort(compare);
console.log(nums); // [1,2,3,4,100,200]
sort() 函数使用了 compare() 函数对数组按照数字大小进行排序, 而不是按照字典顺序

 


 

 

 


http://www.niftyadmin.cn/n/3655853.html

相关文章

.Net Micro Framework研究—Shapes命名空间

试验平台&#xff1a;.Net Micro Framework 模拟器在Microsoft.SPOT.Presentation.Shapes命名空间下&#xff0c;包含几个形状对象&#xff0c;主要有Ellipse、Line、Polygon、Rectangle&#xff0c;同样也只有Rectangle实现的最好&#xff0c;其他形状都不支持填充色&#xff…

JavaScript -------- 数组2

迭代器方法 这些方法对数组中的每个元素应用一个函数&#xff0c; 可以返回一个值、 一组值或者一个新数组。 1 不生成新数组的迭代器方法 forEach()&#xff0c; 该方法接受一个函数作为参数&#xff0c; 对数组中的每个元素使用该函数。 function square(num) { …

.Net Micro Framework研究—中文显示

试验平台&#xff1a;.Net Micro Framework 模拟器微软示例程序中&#xff0c;仅支持两种字体&#xff08;small.tinyfnt和NinaB.tinyfnt&#xff09;&#xff0c;并不支持中文。翁祖泉老师在《如何在Microsoft .NET Micro Framework 的应用程序中添加中文字体&#xff1f;》的…

JavaScript --- 数组练习题

1. 创建一个记录学生成绩的对象&#xff0c; 提供一个添加成绩的方法&#xff0c; 以及一个显示学生平均成绩的方法。 function Warehouse() {this.formData []; // 学生成绩库this.add add; // 添加方法this.average average; // 计算平均值}function add(arr) {this…

javascript------列表

一、 列表的抽象数据类型定义 列表是一组有序的数据。每个列表中的数据称之为元素。在JavaScript中&#xff0c;列表中的元素可以是任意数据类型。列表中可以保存多少元素并没有事先限定&#xff0c;实际使用时元素的数量受到程序内存的限制。 属性 listSize 列表的…

.Net Micro Framework研究—模拟器改造

试验平台&#xff1a;.Net Micro Framework 模拟器由于Digi提供的开发板没有LCD显示屏&#xff0c;所以有关绘图方面的操作&#xff0c;只好在模拟器上进行了。如果大家参加了9月18日在北京召开的.Net Micro Framework2007技术大会&#xff0c;并且耐心等到最后&#xff0c;大会…

JavaScript ----- 学习栈

站就是和列表类似的一种数据结构&#xff0c;它可用来解决计算机世界里的很多问题。栈是一种高效的数据结构&#xff0c;因为数据只能在栈顶添加或删除&#xff0c;所以这样的操作很快&#xff0c;而且容易实现。栈的使用遍布程序语言实现的方方面面&#xff0c;从表达式求值到…