7
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Sử dụng Script mở rộng để đẩy một biến vào một mảng về cơ bản là JavaScript. Bất kỳ ý tưởng tôi đang làm gì sai?
if [ app.documents.length > 0 ] {
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
var allSizes = []; //set up empty array
textArtRange = app.activeDocument.textFrames[i].textRange;
var fontName = textFonts.getByName["Nobile"];
alert [fontName];
textArtRange.characterAttributes.textFont = fontName;
var fontSizes = textArtRange.characterAttributes.size;
allSizes.push[fontSizes]
alert [fontSizes];
}
alert [allSizes];
}
Các cảnh báo cho tất cả chỉ trả về các giá trị đơn, không phải mảng.
Đã hỏi ngày 3 tháng 10 năm 2011 lúc 17:45Oct 3, 2011 at 17:45
0
Di chuyển định nghĩa của
someFunction["param1", ["val1","val2"]];5 bên ngoài vòng lặp.
Hiện tại, bạn đang "đặt lại" giá trị của
someFunction["param1", ["val1","val2"]];6 ở mỗi vòng lặp.
Đã trả lời ngày 3 tháng 10 năm 2011 lúc 17:47Oct 3, 2011 at 17:47
Rob Wrob wRob W
333K80 Huy hiệu vàng783 Huy hiệu bạc667 Huy hiệu Đồng80 gold badges783 silver badges667 bronze badges
Bạn đang thiết lập mảng trống bên trong của vòng lặp. Nó được đặt lại mỗi lần. Di chuyển nó lên trên vòng lặp:
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
Đã trả lời ngày 3 tháng 10 năm 2011 lúc 17:47Oct 3, 2011 at 17:47
Rob Wrob wChris Eberle
333K80 Huy hiệu vàng783 Huy hiệu bạc667 Huy hiệu Đồng12 gold badges80 silver badges118 bronze badges
2
Chương & nbsp; 5. & nbsp; làm việc với các mảng và vòng lặp
5.0. Introduction
Một mảng là một bộ sưu tập các yếu tố được đặt hàng. Trong JavaScript, một mảng có thể được tạo bằng cách sử dụng ký hiệu đối tượng chính thức hoặc nó có thể được khởi tạo bằng cách sử dụng ký hiệu theo nghĩa đen, như đã được chứng minh trong mã sau:
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal
Đối với nhà phát triển, không có sự khác biệt: bạn có thể gọi một phương thức
someFunction["param1", ["val1","val2"]];7 trên cả một chữ và một đối tượng. Tuy nhiên, đối với động cơ JavaScript, một mảng theo nghĩa đen phải được giải thích lại mỗi khi nó được truy cập, đặc biệt là khi được sử dụng trong một cuộc gọi chức năng. Tuy nhiên, về mặt tích cực, các chữ cái có thể thay thế nhu cầu về các biến tạm thời, đặc biệt là khi gửi các giá trị đến một hàm.reinterpreted each time it’s accessed, especially when used in a function call. On the positive side, though, array literals can replace the need for temporary variables, especially when sending values to a function.
Một đối tượng
someFunction["param1", ["val1","val2"]];7 mới được tạo bằng toán tử
someFunction["param1", ["val1","val2"]];9, như sau:
var arrObject = new Array[];
Bạn cũng có thể tạo một mảng mới có một số giá trị:
var arrObject = new Array["val1","val2"];
Bạn có thể tạo một mảng theo nghĩa đen bằng cách sử dụng dấu ngoặc vuông để giữ các giá trị mảng. Chẳng hạn, bạn có thể xác định một mảng theo nghĩa đen và gán nó cho một biến:
var arrLiteral = ["val1","val2","val3"];
Bạn cũng có thể tạo và sử dụng một mảng theo nghĩa đen trong một chức năng hoặc cuộc gọi phương thức:
someFunction["param1", ["val1","val2"]];
Tuy nhiên, lưu ý rằng khi bạn chuyển một biến chứa một mảng theo nghĩa đen cho một hàm, nó được truyền bằng cách tham chiếu giống như truyền một biến giữ một đối tượng
someFunction["param1", ["val1","val2"]];7. Các thay đổi đối với biến trong hàm được phản ánh bên ngoài hàm:
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val2
Một mảng, cho dù theo nghĩa đen hay đối tượng, có thể giữ các giá trị của các loại dữ liệu khác nhau:
var arrObject = new Array["val1", 34, true]; // string, number, boolean var arrLiteral = [arrObject, "val2", 18, false]; // object, string, number, boolean
Bạn có thể in ra một mảng; Công cụ JavaScript sẽ tự động chuyển đổi mảng thành một biểu diễn chuỗi:
alert[arrLiteral]; // prints out val1,34,true,val2,18,false
Trong ví dụ này, công cụ JavaScript thực hiện chuyển đổi mảng sang chuỗi cho cả chữ theo nghĩa đen và đối tượng mảng được chứa dưới dạng một phần tử trong nghĩa đen của mảng.
Các phần tử mảng có thể được truy cập trực tiếp, sử dụng dấu ngoặc vuông chứa chỉ mục của chúng [vị trí trong mảng]. Ngoài ra, các phần tử mảng có thể được đặt bằng cùng một chỉ mục, tự động tạo phần tử mảng nếu nó không tồn tại:index [position in the array]. In addition, array elements can be set using the same index, which automatically creates the array element if it doesn’t exist:
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
0Các mảng trong JavaScript dựa trên 0, có nghĩa là chỉ mục phần tử đầu tiên bằng 0 và phần tử cuối cùng ở độ dài mảng, trừ 1:
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
1Không phải tất cả các phần tử mảng phải được xác định khi được tạo. Chẳng hạn, nếu bạn tạo một mảng theo nghĩa đen, bạn có thể sử dụng dấu phẩy để phân định các yếu tố mảng mà không tồn tại:
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
2Trong mã này, phần tử mảng thứ hai hiện là
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val21. Tuy nhiên, bạn có thể sử dụng dấu phẩy trống để thêm phần tử mảng không xác định vào cuối mảng: JavaScript sẽ bỏ qua nó.
Để tạo một mảng gồm một số phần tử không xác định, bạn có thể cung cấp độ dài mảng khi tạo một mảng:
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
3Một bạn đã tạo ra một mảng, sử dụng đối tượng
someFunction["param1", ["val1","val2"]];7 hoặc ký hiệu theo nghĩa đen, bạn có thể truy cập các phần tử mảng trong một vòng lặp hoặc sử dụng bất kỳ số lượng phương thức mảng nào.
5.1. & Nbsp; lặp qua một mảng
Vấn đề
Bạn muốn dễ dàng truy cập tất cả các yếu tố của một mảng.
Dung dịch
Cách tiếp cận phổ biến nhất để truy cập một mảng là sử dụng vòng lặp
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val23:
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
4Thảo luận
Vòng lặp
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val23 có thể được sử dụng để truy cập vào mọi phần tử của một mảng. Mảng bắt đầu ở mức 0 và thuộc tính mảng
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val25 được sử dụng để đặt đầu vòng lặp.
Tuy nhiên, đôi khi, bạn không muốn truy cập vào mọi yếu tố của mảng. Chẳng hạn, bạn có thể muốn đi qua một mảng cho đến khi bạn tìm thấy một yếu tố cụ thể hoặc bất kỳ yếu tố nào đáp ứng [hoặc không đáp ứng] một tiêu chí nhất định. Trong những trường hợp này, bạn sẽ muốn sử dụng vòng lặp
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val26 và kiểm tra các phần tử mảng:every element of the array. For instance, you might want to traverse an array until you find either a specific element, or any element that meets [or doesn’t meet] a certain criteria. In these cases, you’ll want to use a
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val26 loop and test the array elements:
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
5Lưu ý rằng bộ đếm chỉ mục,
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val27, được tăng lên vì nó được sử dụng để truy cập vào một phần tử mảng. Việc sử dụng
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val28 có nghĩa là giá trị hiện có của
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val27 được truy cập trước tiên và sau đó biến được tăng lên.
5.2. & NBSP; Tạo một mảng đa chiều
Vấn đề
Bạn muốn dễ dàng truy cập tất cả các yếu tố của một mảng.
Dung dịch
Cách tiếp cận phổ biến nhất để truy cập một mảng là sử dụng vòng lặp
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val23:
Thảo luận
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
6Thảo luận
Vòng lặp
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val23 có thể được sử dụng để truy cập vào mọi phần tử của một mảng. Mảng bắt đầu ở mức 0 và thuộc tính mảng
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val25 được sử dụng để đặt đầu vòng lặp.
Tuy nhiên, đôi khi, bạn không muốn truy cập vào mọi yếu tố của mảng. Chẳng hạn, bạn có thể muốn đi qua một mảng cho đến khi bạn tìm thấy một yếu tố cụ thể hoặc bất kỳ yếu tố nào đáp ứng [hoặc không đáp ứng] một tiêu chí nhất định. Trong những trường hợp này, bạn sẽ muốn sử dụng vòng lặp
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val26 và kiểm tra các phần tử mảng:
Lưu ý rằng bộ đếm chỉ mục,
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val27, được tăng lên vì nó được sử dụng để truy cập vào một phần tử mảng. Việc sử dụng
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val28 có nghĩa là giá trị hiện có của
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val27 được truy cập trước tiên và sau đó biến được tăng lên.
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
75.2. & NBSP; Tạo một mảng đa chiều
Bạn muốn tạo một mảng đa chiều [một mảng mảng].
45.89 | 4 | 34 | 9998.99 | 56 |
3 | 23 | 99 | 43 | 2 |
1 | 1 | 0 | 43 | 67 |
Tạo một mảng trong đó mỗi phần tử cũng là một mảng. Ví dụ: để tạo một mảng với ba phần tử, mỗi phần tử cũng là một mảng gồm ba phần tử chứa, tương ứng, chuỗi, số và văn bản mảng, sử dụng đoạn mã trong ví dụ & nbsp; 5-1.
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
8Ví dụ & nbsp; 5-1. & Nbsp; tạo ra một mảng đa chiều
Các mảng đa chiều trong JavaScript được quản lý bằng cách tạo một mảng mới như một phần tử trong một mảng hiện có. Mảng mới có thể được tạo như một phần tử someFunction["param1", ["val1","val2"]];
7 hoặc dưới dạng một mảng theo nghĩa đen.
Trong ví dụ & nbsp; 5-1, một mảng,
var arrObject = new Array["val1", 34, true]; // string, number, boolean var arrLiteral = [arrObject, "val2", 18, false]; // object, string, number, boolean1, được tạo thành một đối tượng
someFunction["param1", ["val1","val2"]];7 với ba thành viên. Mỗi trong số ba yếu tố đó cũng được tạo thành các đối tượng
someFunction["param1", ["val1","val2"]];7 với ba thành viên. Dữ liệu mảng sau đó được đặt, với thành viên mảng đầu tiên chứa các chuỗi chuỗi, thứ hai chứa các chữ số và chữ cái thứ ba theo chủ đề của chúng tôi có chứa hai thành viên mảng, mỗi thành viên có một chuỗi theo nghĩa đen.
Để truy cập các phần tử mảng, sử dụng ký hiệu khung vuông, với mỗi bộ giá đỡ được sử dụng để giải quyết từng cấp độ của mảng. Trong mã sau, nội dung mảng được in ra thông qua cửa sổ cảnh báo, sau khi được chuyển đổi thành chuỗi trước, nếu cần thiết:
Vấn đề
Các mảng đa chiều thường được sử dụng để giữ dữ liệu từ cấu trúc bảng, nhưng cách duy trì cấu trúc tùy thuộc vào nhà phát triển. Chẳng hạn, nhà phát triển có thể hỗ trợ cấu trúc mảng trong đó chỉ số bên ngoài phản ánh các cột và bên trong phản ánh các hàng. Ví dụ, Bảng & NBSP; 5-1 cho thấy một bảng ba cột, ba tầng đơn giản chứa một bộ số.
Dung dịch
Cách tiếp cận phổ biến nhất để truy cập một mảng là sử dụng vòng lặp
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val23:
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
9Thảo luận
Vòng lặp
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val23 có thể được sử dụng để truy cập vào mọi phần tử của một mảng. Mảng bắt đầu ở mức 0 và thuộc tính mảng
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val25 được sử dụng để đặt đầu vòng lặp.
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal0
Tuy nhiên, đôi khi, bạn không muốn truy cập vào mọi yếu tố của mảng. Chẳng hạn, bạn có thể muốn đi qua một mảng cho đến khi bạn tìm thấy một yếu tố cụ thể hoặc bất kỳ yếu tố nào đáp ứng [hoặc không đáp ứng] một tiêu chí nhất định. Trong những trường hợp này, bạn sẽ muốn sử dụng vòng lặp
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val26 và kiểm tra các phần tử mảng:
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal1
Lưu ý rằng bộ đếm chỉ mục, function chgArray[arr] {
arr[0] = "surprise!";
}
var newArray = new Array["val1", "val2"];
var newLiteral = ["val1","val2"];
chgArray[newArray];
chgArray[newLiteral];
alert[newArray]; // prints surprise!,val2
alert[newLiteral]; // prints surprise!,val2
7, được tăng lên vì nó được sử dụng để truy cập vào một phần tử mảng. Việc sử dụng function chgArray[arr] {
arr[0] = "surprise!";
}
var newArray = new Array["val1", "val2"];
var newLiteral = ["val1","val2"];
chgArray[newArray];
chgArray[newLiteral];
alert[newArray]; // prints surprise!,val2
alert[newLiteral]; // prints surprise!,val2
8 có nghĩa là giá trị hiện có của function chgArray[arr] {
arr[0] = "surprise!";
}
var newArray = new Array["val1", "val2"];
var newLiteral = ["val1","val2"];
chgArray[newArray];
chgArray[newLiteral];
alert[newArray]; // prints surprise!,val2
alert[newLiteral]; // prints surprise!,val2
7 được truy cập trước tiên và sau đó biến được tăng lên.
Vấn đề
5.2. & NBSP; Tạo một mảng đa chiều
Dung dịch
Bạn muốn tạo một mảng đa chiều [một mảng mảng].
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal2
Thảo luận
Vòng lặp
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val23 có thể được sử dụng để truy cập vào mọi phần tử của một mảng. Mảng bắt đầu ở mức 0 và thuộc tính mảng
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val25 được sử dụng để đặt đầu vòng lặp.
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal3
Tuy nhiên, đôi khi, bạn không muốn truy cập vào mọi yếu tố của mảng. Chẳng hạn, bạn có thể muốn đi qua một mảng cho đến khi bạn tìm thấy một yếu tố cụ thể hoặc bất kỳ yếu tố nào đáp ứng [hoặc không đáp ứng] một tiêu chí nhất định. Trong những trường hợp này, bạn sẽ muốn sử dụng vòng lặp
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val26 và kiểm tra các phần tử mảng:
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal4
Lưu ý rằng bộ đếm chỉ mục,
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val27, được tăng lên vì nó được sử dụng để truy cập vào một phần tử mảng. Việc sử dụng
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val28 có nghĩa là giá trị hiện có của
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val27 được truy cập trước tiên và sau đó biến được tăng lên.
Nếu các phần tử mảng chứa các chuỗi có thể được chuyển đổi thành số, thì hàm sắp xếp
alert[arrLiteral]; // prints out val1,34,true,val2,18,false2 vẫn hoạt động, vì chuyển đổi số là tự động:
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal5
Phương pháp
var arrObject = new Array["val1", 34, true]; // string, number, boolean var arrLiteral = [arrObject, "val2", 18, false]; // object, string, number, boolean9 sắp xếp các yếu tố theo thứ tự tăng dần. Nếu bạn muốn thực hiện một loại ngược, hãy sử dụng phương thức
var arrObject = new Array["val1", 34, true]; // string, number, boolean var arrLiteral = [arrObject, "val2", 18, false]; // object, string, number, boolean9 để sắp xếp các phần tử và sau đó sử dụng phương thức
alert[arrLiteral]; // prints out val1,34,true,val2,18,false5 để đảo ngược thứ tự thành viên mảng:
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal6
5.5. & NBSP; Lưu trữ và truy cập các giá trị theo thứ tự
Vấn đề
Bạn muốn lưu trữ các giá trị theo cách mà bạn có thể truy cập các giá trị theo thứ tự chúng được lưu trữ.
Dung dịch
Để lưu trữ và truy cập các giá trị theo thứ tự mà họ đã nhận được, hãy tạo hàng đợi FIFO [trước, đầu tiên]. Sử dụng phương thức JavaScript
someFunction["param1", ["val1","val2"]];7
alert[arrLiteral]; // prints out val1,34,true,val2,18,false7 để thêm các mục vào hàng đợi và
alert[arrLiteral]; // prints out val1,34,true,val2,18,false8 để truy xuất:
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal7
Thảo luận
Hàng đợi là một loạt các phần tử được thêm một lần và được truy xuất theo thứ tự đầu tiên, đầu tiên [FIFO]. Hãy nghĩ về một dòng tại ngân hàng: Mọi người đi đến cuối khi họ đến ngân hàng, và các giao dịch viên giúp đỡ những người ở phía trước của dòng, những người đã ở đó lâu nhất.queue is an array of elements that are added one at a time, and retrieved in a first-in, first-out order [FIFO]. Think of a line at the bank: people go to the end when they arrive at the bank, and tellers help those in the front of the line, who have been there the longest.
Bạn có thể mô phỏng hành vi này bằng cách sử dụng các biến bộ đếm để giữ chỉ mục của mục cuối cùng được thêm Hoa Kỳ, và cũng giữ cho mảng sạch trong quá trình.
Phương thức
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
00 tạo ra một phần tử mảng mới và thêm nó vào phần cuối của mảng:var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal8
Phần tử mảng tăng gia tăng với mỗi phần tử được đẩy.
Phương thức
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
01 trích xuất phần tử mảng từ phía trước của mảng, loại bỏ nó khỏi mảng và trả về phần tử:var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal9
Số lượng phần tử mảng giảm một phần với mỗi phần tử được dịch chuyển, vì
alert[arrLiteral]; // prints out val1,34,true,val2,18,false8 cũng sửa đổi mảng ngoài việc trả về mục.
5.6. & NBSP; Lưu trữ và truy cập các giá trị theo thứ tự ngược lại
Vấn đề
Bạn muốn lưu trữ các giá trị theo cách mà bạn có thể truy cập các giá trị theo thứ tự chúng được lưu trữ.
Dung dịch
Để lưu trữ và truy cập các giá trị theo thứ tự mà họ đã nhận được, hãy tạo hàng đợi FIFO [trước, đầu tiên]. Sử dụng phương thức JavaScript
someFunction["param1", ["val1","val2"]];7
alert[arrLiteral]; // prints out val1,34,true,val2,18,false7 để thêm các mục vào hàng đợi và
alert[arrLiteral]; // prints out val1,34,true,val2,18,false8 để truy xuất:
var arrObject = new Array[];0
Thảo luận
Hàng đợi là một loạt các phần tử được thêm một lần và được truy xuất theo thứ tự đầu tiên, đầu tiên [FIFO]. Hãy nghĩ về một dòng tại ngân hàng: Mọi người đi đến cuối khi họ đến ngân hàng, và các giao dịch viên giúp đỡ những người ở phía trước của dòng, những người đã ở đó lâu nhất.stack is an array of elements, with each new element added to the top of the stack, and retrieved in a last-in, first-out [LIFO] order. Think of a stack of dishes: you add plates to the top as they’re washed, and retrieve them from the top when needed. You could use a variable holding an integer that tracks the end of the array after each addition and retrieval, but JavaScript provides the functionality we need.
Phương thức
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
00 tạo ra một phần tử mảng mới và thêm nó vào phần cuối của mảng:var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal8
Phần tử mảng tăng gia tăng với mỗi phần tử được đẩy.
Phương thức
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
01 trích xuất phần tử mảng từ phía trước của mảng, loại bỏ nó khỏi mảng và trả về phần tử:var arrObject = new Array[];2
Số lượng phần tử mảng giảm một phần với mỗi phần tử được dịch chuyển, vì
alert[arrLiteral]; // prints out val1,34,true,val2,18,false8 cũng sửa đổi mảng ngoài việc trả về mục.
5.6. & NBSP; Lưu trữ và truy cập các giá trị theo thứ tự ngược lại
Vấn đề
Bạn muốn lưu trữ các giá trị theo cách mà bạn có thể truy cập các giá trị theo thứ tự chúng được lưu trữ.
Dung dịch
Để lưu trữ và truy cập các giá trị theo thứ tự mà họ đã nhận được, hãy tạo hàng đợi FIFO [trước, đầu tiên]. Sử dụng phương thức JavaScript
someFunction["param1", ["val1","val2"]];7
alert[arrLiteral]; // prints out val1,34,true,val2,18,false7 để thêm các mục vào hàng đợi và
alert[arrLiteral]; // prints out val1,34,true,val2,18,false8 để truy xuất:
var arrObject = new Array[];3
Thảo luận
Hàng đợi là một loạt các phần tử được thêm một lần và được truy xuất theo thứ tự đầu tiên, đầu tiên [FIFO]. Hãy nghĩ về một dòng tại ngân hàng: Mọi người đi đến cuối khi họ đến ngân hàng, và các giao dịch viên giúp đỡ những người ở phía trước của dòng, những người đã ở đó lâu nhất.
Bạn có thể mô phỏng hành vi này bằng cách sử dụng các biến bộ đếm để giữ chỉ mục của mục cuối cùng được thêm Hoa Kỳ, và cũng giữ cho mảng sạch trong quá trình.by value—changing the value in the old array has no impact on the same values in the new array, and vice versa.
Phương thức
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
00 tạo ra một phần tử mảng mới và thêm nó vào phần cuối của mảng:by reference, whether they’re copied via var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
10 or by direct variable assignment:var arrObject = new Array[];4
Phần tử mảng tăng gia tăng với mỗi phần tử được đẩy.
var arrObject = new Array[];5
Một cách sử dụng tiện dụng khác cho
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
10 là để chuyển đổi thuộc tính đối số chức năng thành một mảng thích hợp:var arrObject = new Array[];6
Sử dụng
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
10 để tạo một tập hợp con của một mảng là một cách nhanh chóng sao chép một tập hợp con của một mảng và, nếu các giá trị là đối tượng, hãy đảm bảo cả hai mảng được đồng bộ hóa. Tuy nhiên, hãy lưu ý rằng IE8 không hỗ trợ var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
10.5.8. & NBSP; Tìm kiếm thông qua một mảng
Vấn đề
Bạn muốn tìm kiếm một mảng cho một giá trị cụ thể và nhận chỉ mục phần tử mảng nếu được tìm thấy.
Dung dịch
Sử dụng các phương thức đối tượng mới [ECMAScript 5]
someFunction["param1", ["val1","val2"]];7
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21:var arrObject = new Array[];7
Thảo luận
Mặc dù hỗ trợ cho cả
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21 đã tồn tại trong các trình duyệt trong một thời gian, nhưng nó chỉ được chính thức hóa với việc phát hành ECMAScript 5. Cả hai phương thức đều có giá trị tìm kiếm, sau đó được so sánh với mọi yếu tố trong mảng. Nếu giá trị được tìm thấy, cả hai trả về một chỉ mục đại diện cho phần tử mảng. Nếu giá trị không được tìm thấy, thì11 được trả về. Phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 trả về phương thức đầu tiên được tìm thấy, var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21 trả về phương thức cuối cùng được tìm thấy:var arrObject = new Array[];8
Cả hai phương thức đều có thể lấy chỉ mục bắt đầu, cài đặt nơi tìm kiếm sẽ bắt đầu:
var arrObject = new Array[];9
Hiện tại, tất cả các trình duyệt mục tiêu của cuốn sách hỗ trợ
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21, ngoại trừ IE8.
Xem thêm
Như đã đề cập, không phải tất cả các trình duyệt hỗ trợ
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
28 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21. Một phương pháp trình duyệt chéo để thực hiện chức năng giống như trong các trình duyệt này được đưa ra trong tài liệu Mozilla, tại //developer.mozilla.org/en/core_javascript_1.5_reference/global_objects/array/indexof. Vì IE8 không hỗ trợ var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20, nên đây là cách giải quyết của Mozilla cho chức năng:var arrObject = new Array["val1","val2"];0
5.9. & Nbsp; làm phẳng một mảng đa chiều
Vấn đề
Bạn muốn tìm kiếm một mảng cho một giá trị cụ thể và nhận chỉ mục phần tử mảng nếu được tìm thấy.
Dung dịch
Sử dụng các phương thức đối tượng mới [ECMAScript 5]
someFunction["param1", ["val1","val2"]];7
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21:var arrObject = new Array["val1","val2"];1
Thảo luận
Mặc dù hỗ trợ cho cả
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21 đã tồn tại trong các trình duyệt trong một thời gian, nhưng nó chỉ được chính thức hóa với việc phát hành ECMAScript 5. Cả hai phương thức đều có giá trị tìm kiếm, sau đó được so sánh với mọi yếu tố trong mảng. Nếu giá trị được tìm thấy, cả hai trả về một chỉ mục đại diện cho phần tử mảng. Nếu giá trị không được tìm thấy, thì11 được trả về. Phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 trả về phương thức đầu tiên được tìm thấy, var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21 trả về phương thức cuối cùng được tìm thấy:Cả hai phương thức đều có thể lấy chỉ mục bắt đầu, cài đặt nơi tìm kiếm sẽ bắt đầu:
Hiện tại, tất cả các trình duyệt mục tiêu của cuốn sách hỗ trợ var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21, ngoại trừ IE8.
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
Vấn đề
Bạn muốn tìm kiếm một mảng cho một giá trị cụ thể và nhận chỉ mục phần tử mảng nếu được tìm thấy.
Dung dịch
Sử dụng các phương thức đối tượng mới [ECMAScript 5]
someFunction["param1", ["val1","val2"]];7
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21:var arrObject = new Array["val1","val2"];2
Thảo luận
Mặc dù hỗ trợ cho cả
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21 đã tồn tại trong các trình duyệt trong một thời gian, nhưng nó chỉ được chính thức hóa với việc phát hành ECMAScript 5. Cả hai phương thức đều có giá trị tìm kiếm, sau đó được so sánh với mọi yếu tố trong mảng. Nếu giá trị được tìm thấy, cả hai trả về một chỉ mục đại diện cho phần tử mảng. Nếu giá trị không được tìm thấy, thì11 được trả về. Phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 trả về phương thức đầu tiên được tìm thấy, var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21 trả về phương thức cuối cùng được tìm thấy:var arrObject = new Array["val1","val2"];3
Cả hai phương thức đều có thể lấy chỉ mục bắt đầu, cài đặt nơi tìm kiếm sẽ bắt đầu:
var arrObject = new Array["val1","val2"];4
Hiện tại, tất cả các trình duyệt mục tiêu của cuốn sách hỗ trợ
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21, ngoại trừ IE8.var arrObject = new Array["val1","val2"];5
Xem thêm
Như đã đề cập, không phải tất cả các trình duyệt hỗ trợ
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
28 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21. Một phương pháp trình duyệt chéo để thực hiện chức năng giống như trong các trình duyệt này được đưa ra trong tài liệu Mozilla, tại //developer.mozilla.org/en/core_javascript_1.5_reference/global_objects/array/indexof. Vì IE8 không hỗ trợ var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20, nên đây là cách giải quyết của Mozilla cho chức năng:var arrObject = new Array["val1","val2"];6
5.9. & Nbsp; làm phẳng một mảng đa chiều
Xem thêm
Như đã đề cập, không phải tất cả các trình duyệt hỗ trợ
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
28 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21. Một phương pháp trình duyệt chéo để thực hiện chức năng giống như trong các trình duyệt này được đưa ra trong tài liệu Mozilla, tại //developer.mozilla.org/en/core_javascript_1.5_reference/global_objects/array/indexof. Vì IE8 không hỗ trợ var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20, nên đây là cách giải quyết của Mozilla cho chức năng:5.9. & Nbsp; làm phẳng một mảng đa chiều
Vấn đề
Bạn muốn làm phẳng một mảng đa chiều thành một mảng một chiều.
Dung dịch
Sử dụng các phương thức đối tượng mới [ECMAScript 5]
someFunction["param1", ["val1","val2"]];7
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21:callback function to each array element:var arrObject = new Array["val1","val2"];7
Thảo luận
Mặc dù hỗ trợ cho cả
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21 đã tồn tại trong các trình duyệt trong một thời gian, nhưng nó chỉ được chính thức hóa với việc phát hành ECMAScript 5. Cả hai phương thức đều có giá trị tìm kiếm, sau đó được so sánh với mọi yếu tố trong mảng. Nếu giá trị được tìm thấy, cả hai trả về một chỉ mục đại diện cho phần tử mảng. Nếu giá trị không được tìm thấy, thì11 được trả về. Phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
20 trả về phương thức đầu tiên được tìm thấy, var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
21 trả về phương thức cuối cùng được tìm thấy:Cả hai phương thức đều có thể lấy chỉ mục bắt đầu, cài đặt nơi tìm kiếm sẽ bắt đầu:
Đầu tiên, giá trị phần tử được kiểm tra để xem nó có khớp với một chuỗi đã cho không,
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
50. Nếu khớp, chỉ số phần tử mảng được sử dụng để sửa đổi giá trị phần tử mảng với chuỗi thay thế, var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
51.Ghi chú
Don Tiết trả lại một giá trị từ hàm được chuyển đến phương thức
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45, vì giá trị sẽ bị loại bỏ.Chrome, Firefox, Opera và Safari hỗ trợ
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45, nhưng IE8 thì không.Xem thêm
Khái niệm về các chức năng gọi lại được đề cập chi tiết hơn trong Chương & NBSP; 6.
Hầu hết các trình duyệt hiện đại hỗ trợ
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45. Tuy nhiên, đối với những người don don, bạn có thể mô phỏng hành vi var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 bằng cách sử dụng thuộc tính var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
56. Mozilla cung cấp một mô tả về cách mô phỏng var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 tại //developer.mozilla.org/en/core_javascript_1.5_reference/global_objects/array/foreach. Để hoàn thiện, tôi đã nhân đôi mã dưới đây. Để sử dụng, hãy thêm mã vào chức năng thư viện và đảm bảo rằng nó đã được xử lý trước khi phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 là cần thiết:var arrObject = new Array["val1","val2"];8
5.12. & NBSP; Áp dụng chức năng cho mọi phần tử trong một mảng và trả lại một mảng mới
Vấn đề
Bạn muốn chuyển đổi một loạt các số thập phân thành một mảng mới với các tương đương thập lục phân của chúng.
Dung dịch
Sử dụng phương thức đối tượng
someFunction["param1", ["val1","val2"]];7
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60 để tạo một mảng mới bao gồm các phần tử từ mảng cũ đã được sửa đổi thông qua chức năng gọi lại được chuyển sang phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60:var arrObject = new Array["val1","val2"];9
Thảo luận
Giống như phương thức
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 trong Recipe & NBSP; 5.11, phương thức ECMAScript 5 var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60 cho phép chúng tôi đính kèm chức năng gọi lại được áp dụng cho mỗi phần tử mảng. Tuy nhiên, không giống như var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45, phương pháp var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60 dẫn đến một mảng mới thay vì sửa đổi mảng gốc. Do đó, bạn đã giành được giá trị trả về một giá trị khi sử dụng var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45, nhưng bạn phải trả về một giá trị khi sử dụng var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60.Chức năng mà truyền qua phương thức MAP có ba tham số: phần tử mảng hiện tại, chỉ mục cho phần tử mảng và mảng. Các phương pháp
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60 hiện không được IE8 hỗ trợ.Xem thêm
Khái niệm về các chức năng gọi lại được đề cập chi tiết hơn trong Chương & NBSP; 6.
Hầu hết các trình duyệt hiện đại hỗ trợ
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45. Tuy nhiên, đối với những người don don, bạn có thể mô phỏng hành vi var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 bằng cách sử dụng thuộc tính var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
56. Mozilla cung cấp một mô tả về cách mô phỏng var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 tại //developer.mozilla.org/en/core_javascript_1.5_reference/global_objects/array/foreach. Để hoàn thiện, tôi đã nhân đôi mã dưới đây. Để sử dụng, hãy thêm mã vào chức năng thư viện và đảm bảo rằng nó đã được xử lý trước khi phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 là cần thiết:var arrLiteral = ["val1","val2","val3"];0
5.12. & NBSP; Áp dụng chức năng cho mọi phần tử trong một mảng và trả lại một mảng mới
Vấn đề
Bạn muốn chuyển đổi một loạt các số thập phân thành một mảng mới với các tương đương thập lục phân của chúng.
Dung dịch
Sử dụng phương thức đối tượng
someFunction["param1", ["val1","val2"]];7
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60 để tạo một mảng mới bao gồm các phần tử từ mảng cũ đã được sửa đổi thông qua chức năng gọi lại được chuyển sang phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60:var arrLiteral = ["val1","val2","val3"];1
Thảo luận
Giống như phương thức
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 trong Recipe & NBSP; 5.11, phương thức ECMAScript 5 var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60 cho phép chúng tôi đính kèm chức năng gọi lại được áp dụng cho mỗi phần tử mảng. Tuy nhiên, không giống như var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45, phương pháp var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60 dẫn đến một mảng mới thay vì sửa đổi mảng gốc. Do đó, bạn đã giành được giá trị trả về một giá trị khi sử dụng var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45, nhưng bạn phải trả về một giá trị khi sử dụng var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60.Chức năng mà truyền qua phương thức MAP có ba tham số: phần tử mảng hiện tại, chỉ mục cho phần tử mảng và mảng. Các phương pháp
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60 hiện không được IE8 hỗ trợ.Hầu hết các trình duyệt hiện đại đều hỗ trợ phương pháp đối tượng
someFunction["param1", ["val1","val2"]];7
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60, nhưng để đảm bảo rằng chức năng có mặt, bạn có thể sử dụng thuộc tính var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
56 để mô phỏng hành vi của phương thức. Xem làm thế nào tại trang web Mozilla.Xem thêm
Khái niệm về các chức năng gọi lại được đề cập chi tiết hơn trong Chương & NBSP; 6.
Hầu hết các trình duyệt hiện đại hỗ trợvar allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45. Tuy nhiên, đối với những người don don, bạn có thể mô phỏng hành vi var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 bằng cách sử dụng thuộc tính var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
56. Mozilla cung cấp một mô tả về cách mô phỏng var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 tại //developer.mozilla.org/en/core_javascript_1.5_reference/global_objects/array/foreach. Để hoàn thiện, tôi đã nhân đôi mã dưới đây. Để sử dụng, hãy thêm mã vào chức năng thư viện và đảm bảo rằng nó đã được xử lý trước khi phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 là cần thiết:5.12. & NBSP; Áp dụng chức năng cho mọi phần tử trong một mảng và trả lại một mảng mới
Vấn đề
Bạn muốn chuyển đổi một loạt các số thập phân thành một mảng mới với các tương đương thập lục phân của chúng.
Dung dịch
Sử dụng phương thức đối tượng
someFunction["param1", ["val1","val2"]];7
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60 để tạo một mảng mới bao gồm các phần tử từ mảng cũ đã được sửa đổi thông qua chức năng gọi lại được chuyển sang phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60:var arrLiteral = ["val1","val2","val3"];3
Thảo luận
var arrLiteral = ["val1","val2","val3"];4
Thảo luận
Giống như phương thức
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45 trong Recipe & NBSP; 5.11, phương thức ECMAScript 5 var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60 cho phép chúng tôi đính kèm chức năng gọi lại được áp dụng cho mỗi phần tử mảng. Tuy nhiên, không giống như var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45, phương pháp var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60 dẫn đến một mảng mới thay vì sửa đổi mảng gốc. Do đó, bạn đã giành được giá trị trả về một giá trị khi sử dụng var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
45, nhưng bạn phải trả về một giá trị khi sử dụng var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
60.Giải pháp chứng minh rằng cùng một hàm gọi lại có thể được sử dụng cho cả các phương thức đối tượng
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
86 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
90. Sự khác biệt là khi sử dụng phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
86, ngay khi hàm trả về giá trị sai, quá trình xử lý đã kết thúc và phương thức trả về sai. Tuy nhiên, phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
88 sẽ tiếp tục kiểm tra đối với mọi phần tử mảng cho đến khi hàm gọi lại trả về đúng. Vào thời điểm đó, không có yếu tố nào khác được xác thực và phương thức trả về đúng. Tuy nhiên, nếu chức năng gọi lại kiểm tra đối với tất cả các yếu tố và không trả về true tại bất kỳ điểm nào, phương thức var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
88 trả về sai.Phương pháp nào để sử dụng phụ thuộc vào nhu cầu của bạn. Nếu tất cả các phần tử mảng phải đáp ứng các tiêu chí nhất định, thì hãy sử dụng
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
86; Nếu không, sử dụng var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
88.Hàm gọi lại có ba tham số: phần tử, chỉ mục cho phần tử và mảng. Không phải phương pháp
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
88 hoặc var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
86 đều được IE8 hỗ trợ, nhưng chúng được hỗ trợ bởi các trình duyệt mục tiêu khác cho cuốn sách này.
Xem thêm
Hầu hết các trình duyệt hiện đại đều hỗ trợ
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
86 và var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
88, nhưng đối với những trình duyệt đó không có giá trị [như hầu hết các phiên bản của Internet Explorer], bạn có thể mô phỏng hành vi bằng cách sử dụng var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
56. Mozilla bao gồm cách làm điều này tại //developer.mozilla.org/en/core_javascript_1.5_reference/global_objects/array/some và //developer.mozilla.org/en .Để toàn diện, tôi đã bao gồm các chức năng dưới đây. Để sử dụng, đảm bảo rằng tập lệnh được cung cấp được xử lý trước khi các phương pháp là cần thiết.
Đây là cách mô phỏng
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
88:var arrLiteral = ["val1","val2","val3"];5
Đây là cách mô phỏng
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
86:var arrLiteral = ["val1","val2","val3"];6
5.15. & NBSP; Sử dụng một mảng kết hợp để lưu trữ tên và giá trị thành phần biểu mẫu
Vấn đề
Bạn muốn lưu trữ tên và giá trị thành phần, cho các mục đích xác thực sau này.
Dung dịch
Sử dụng một mảng kết hợp để lưu trữ các phần tử, sử dụng số nhận dạng phần tử làm chỉ mục mảng:
var arrLiteral = ["val1","val2","val3"];7
Lặp lại trên mảng bằng câu lệnh
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal09:
var arrLiteral = ["val1","val2","val3"];8
Thảo luận
Hầu hết các mảng JavaScript đều sử dụng một chỉ mục số, chẳng hạn như sau:
var arrLiteral = ["val1","val2","val3"];9
Tuy nhiên, bạn có thể tạo một mảng kết hợp trong JavaScript, trong đó chỉ mục mảng có thể là một chuỗi đại diện cho một từ khóa, ánh xạ chuỗi đó thành một giá trị nhất định. Trong giải pháp, chỉ mục mảng là bộ định danh được cung cấp phần tử mảng và giá trị mảng thực tế là giá trị phần tử dạng.associative array in JavaScript, where the array index can be a string representing a keyword, mapping that string to a given value. In the solution, the array index is the identifier given the array element, and the actual array value is the form element value.
Bạn có thể tạo một mảng kết hợp, nhưng bạn không sử dụng đối tượng
someFunction["param1", ["val1","val2"]];7 để làm như vậy. Sử dụng đối tượng
someFunction["param1", ["val1","val2"]];7 có nguy cơ và chủ động không khuyến khích, đặc biệt là nếu bạn sử dụng một trong các thư viện tích hợp sử dụng thuộc tính
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal12 để mở rộng các đối tượng, như mọi người đã phát hiện ra khi thư viện nguyên mẫu phổ biến được phát hành lần đầu tiên vài năm trước.can create an associative array, but you’re not using the
someFunction["param1", ["val1","val2"]];7 object to do so. Using the
someFunction["param1", ["val1","val2"]];7 object is risky and actively discouraged—especially if you’re using one of the built-in libraries that use the
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal12 attribute for extending objects, as people discovered when the popular Prototype.js library was first released several years ago.
Thư viện nguyên mẫu trước đó đã đưa ra một giả định rằng hầu hết việc sử dụng mảng trong JavaScript là dựa trên chỉ mục số, giống như hầu hết các ví dụ trước đó trong chương này. Thư viện đã mở rộng chức năng đối tượng
someFunction["param1", ["val1","val2"]];7 thông qua
var allSizes = []; //set up empty array
for [ i = 0; i< app.activeDocument.textFrames.length; i++] {
.....
56, dựa trên giả định này. Nhưng việc mở rộng các đối tượng someFunction["param1", ["val1","val2"]];7 theo cách này phá vỡ chức năng vòng lặp ____209 được sử dụng để vượt qua một mảng kết hợp được tạo từ một đối tượng
someFunction["param1", ["val1","val2"]];7.
Nó không phải là nguyên mẫu.js đã bị phá vỡ JavaScript. Vòng lặp
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal09 được dành cho một mục đích: lặp lại các thuộc tính của đối tượng, chẳng hạn như có thể lặp qua các thuộc tính của đối tượng
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal19 hoặc các thuộc tính đối tượng tùy chỉnh của riêng bạn.
Khi chúng tôi sử dụng một đối tượng
someFunction["param1", ["val1","val2"]];7 để tạo một mảng kết hợp, những gì chúng tôi thực sự làm là thêm các thuộc tính mới vào đối tượng mảng, thay vì thêm các phần tử mảng mới. Bạn thực sự có thể tạo một mảng kết hợp với
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal21 hoặc
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal19, cũng như
someFunction["param1", ["val1","val2"]];7. Lý do là trong các đối tượng JavaScript là các mảng kết hợp. Khi bạn thêm một mảng mới,
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal24:are associative arrays. When you’re adding a new array,
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal24:
someFunction["param1", ["val1","val2"]];0
Những gì bạn thực sự làm là thêm một thuộc tính đối tượng mới:
someFunction["param1", ["val1","val2"]];1
Để chứng minh thêm mức độ khác nhau của mảng kết hợp với một mảng dựa trên số, khi bạn sử dụng
someFunction["param1", ["val1","val2"]];7 để tạo một mảng kết hợp, bạn có thể truy cập vào các phần tử của mảng, theo chỉ mục và thuộc tính độ dài trả về 0.
Thay vì sử dụng đối tượng
someFunction["param1", ["val1","val2"]];7 để tạo mảng kết hợp, hãy sử dụng trực tiếp JavaScript
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal27. Bạn nhận được cùng một chức năng, nhưng tránh các cuộc đụng độ với các thư viện mở rộng đối tượng cơ sở
someFunction["param1", ["val1","val2"]];7 bằng cách sử dụng
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal12.
Ví dụ & NBSP; 5-3 hiển thị một trang web. Ở đây, khi biểu mẫu được gửi, tất cả các yếu tố mẫu của văn bản được truy cập và lưu trữ trong một mảng kết hợp. ID phần tử được sử dụng làm từ khóa mảng và các giá trị được gán cho các phần tử mảng. Sau khi được thu thập, mảng kết hợp được chuyển cho một hàm khác có thể được sử dụng để xác thực các giá trị, nhưng trong trường hợp này chỉ tạo ra một chuỗi các cặp từ khóa/giá trị, sau đó được hiển thị.
Ví dụ & nbsp; 5-3. & Nbsp; trình diễn mảng kết hợp với các yếu tố biểu mẫu
someFunction["param1", ["val1","val2"]];2
Trong ví dụ, lưu ý rằng chỉ mục mảng được hình thành bởi phần tử mẫu
var arrObject = new Array["val1", "val2"]; // array as object var arrLiteral = ["val1", "val2"]; // array literal30. Khi mảng đi qua, cú pháp vòng
function chgArray[arr] { arr[0] = "surprise!"; } var newArray = new Array["val1", "val2"]; var newLiteral = ["val1","val2"]; chgArray[newArray]; chgArray[newLiteral]; alert[newArray]; // prints surprise!,val2 alert[newLiteral]; // prints surprise!,val23 được sử dụng là:
someFunction["param1", ["val1","val2"]];3
Cú pháp này truy cập vào chỉ mục mảng, sau đó được gán cho biến từ khóa có thể được sử dụng để truy cập giá trị mảng:
someFunction["param1", ["val1","val2"]];4
Hình & NBSP; 5-1 cho thấy ví dụ sau các giá trị được gõ vào các trường biểu mẫu và biểu mẫu được gửi.
Hình & NBSP; 5-1. & NBSP; Trình diễn mảng kết hợp và các yếu tố hình thức vượt qua
Loại ghép từ khóa/giá trị này thường được gọi là bản đồ băm hoặc bảng băm, mặc dù chức năng JavaScript không phải là một chức năng bản đồ băm đúng. Lý do tại sao nó không phải là một bản đồ băm đúng là vì nó không tính đến thực tế là cùng một từ khóa có thể được sử dụng với nhiều giá trị và phiên bản JavaScript chỉ chấp nhận các chuỗi làm từ khóa.hash map or hash table, though the JavaScript functionality isn’t a true hash map functionality. The reason why it isn’t a true hash map is that it doesn’t account for the fact that the same keyword could be used with multiple values, and the JavaScript version only accepts strings as keywords.