जेसक्रिप्ट एरे

JavaScript 数组用于在单一变量中存储多个值。

उदाहरण

var cars = ["Saab", "Volvo", "BMW"];

अपने आप प्रयास करें

什么是数组?

数组是一种特殊的变量,它能够一次存放一个以上的值。

如果您有一个项目清单(例如,汽车品牌列表),在单个变量中存储汽车品牌应该是这样的:

var car1 = "Saab";
var car2 = "Volvo";
var car3 = "BMW"; 

不过,假如您希望遍历所有汽车并找到一个特定的值?假如不是三个汽车品牌而是三百个呢?

解决方法就是数组!

数组可以用一个单一的名称存放很多值,并且还可以通过引用索引号来访问这些值。

创建数组

使用数组文本是创建 JavaScript 数组最简单的方法。

语法:

var array-name = [item1, item2, ...];

उदाहरण

var cars = ["Saab", "Volvo", "BMW"];

अपने आप प्रयास करें

空格和折行并不重要。声明可横跨多行:

उदाहरण

var cars = [
    "Saab",
    "Volvo",
    "BMW"

अपने आप प्रयास करें

अंतिम एलिमेंट के बाद एक बिंदुविन्यास नहीं लिखें (उदाहरण के लिए "BMW",).

ब्राउज़र के बीच क्षमता की समस्या हो सकती है。

जेसकेपीआर खुदरा शब्द का उपयोग करके

नीचे का उदाहरण भी एक एलिमेंट बनाता है और उसे मान देता है:

उदाहरण

var cars = new Array("Saab", "Volvo", "BMW");

अपने आप प्रयास करें

इन दोनों उदाहरणों का प्रभाव पूरी तरह से एक-सा एक है। new Array().

सरलता, पठनीयता और कार्यान्वयन गति के लिए, पहली विधि (एलिमेंट टेक्स्ट विधि) का उपयोग करें。

एलिमेंट देखते हैं

हम उदाहरण के लिएसंकेतांक (अनुक्रमांक)एक एलिमेंट को उदाहरण के लिए उदाहरण के लिए

यह वाक्यविन्यास cars में पहले एलिमेंट के मान को देखता है:

var name = cars[0];

यह वाक्यविन्यास cars में पहले एलिमेंट को संशोधित करता है:

cars[0] = "Opel";

उदाहरण

var cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars[0]; 

अपने आप प्रयास करें

[0] एलिमेंट का पहला एलिमेंट है।[1] दूसरा है। एलिमेंट निर्देशक से 0 से शुरू होता है。

एलिमेंट को बदलना

यह वाक्यविन्यास cars में पहले एलिमेंट के मान को संशोधित करता है:

cars[0] = "Opel";

उदाहरण

var cars = ["Saab", "Volvo", "BMW"];
cars[0] = "Opel";
document.getElementById("demo").innerHTML = cars[0];

अपने आप प्रयास करें

पूरे आयत्त को देखें

JavaScript के द्वारा, पूरे आयत्त को आयत्त नाम के द्वारा आयत्त को पहुचा जा सकता है:

उदाहरण

var cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars; 

अपने आप प्रयास करें

आयत्त ऑब्जेक्ट है

आयत्त एक विशेष तरह के ऑब्जेक्ट है। JavaScript में आयत्त का इस्तेमाल typeof ऑपरेटर "object" वापस करेगा。

लेकिन, JavaScript आयत्त को बेहतर तरीके से आयत्त के रूप में वर्णित किया जाता है।

आयत्त का इस्तेमालनंबरउसके "एलीमेंट" को देखने के लिए। इस उदाहरण मेंperson[0] Bill को वापस करें:

आयत्त:

var person = ["Bill", "Gates", 62];

अपने आप प्रयास करें

ऑब्जेक्ट का इस्तेमालनामउसके "सदस्य" को देखने के लिए। इस उदाहरण मेंperson.firstName Bill को वापस करें:

ऑब्जेक्ट:

var person = {firstName:"Bill", lastName:"Gates", age:19};

अपने आप प्रयास करें

आयत्त एलीमेंट ऑब्जेक्ट हो सकते हैं

JavaScript वेरियेबल ऑब्जेक्ट हो सकते हैं। आयत्त विशेष तरह के ऑब्जेक्ट हैं।

इसलिए, आप समान आयत्त में अलग-अलग प्रकार के वेरियेबल को सहेज सकते हैं。

इसलिए, आप आयत्त में ऑब्जेक्ट को सहेज सकते हैं। आप आयत्त में फ़ंक्शन को सहेज सकते हैं। आप आयत्त में आयत्त को भी सहेज सकते हैं:

myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = myCars;

आयत्त गुण और विधियाँ

JavaScript आयत्त की वास्तविक शक्ति आयत्त के गुणों और विधियों में छिपी है:

उदाहरण

var x = cars.length;   // length प्रयोग टूल एलीमेंट की संख्या बदल देता है
var y = cars.sort();   // sort() विधि आयत्त को क्रमबद्ध करती है

हम अगले अध्याय में आयत्त विधियों को सीखेंगे。

length प्रयोग टूल

length प्रयोग टूल आयत्त की लंबाई (एलीमेंट की संख्या) बदल देता है。

उदाहरण

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.length;                       // fruits की लंबाई 4 है

अपने आप प्रयास करें

length प्रयोग टूल सबसे उच्च आयत्त इंडेक्स (इंडेक्स) से बड़ा होता है।

पहला आयत्त एलीमेंट को देखें

उदाहरण

fruits = ["Banana", "Orange", "Apple", "Mango"];
var first = fruits[0];

अपने आप प्रयास करें

आखिरी आयत्त एलीमेंट को देखें

उदाहरण

fruits = ["Banana", "Orange", "Apple", "Mango"];
var last = fruits[fruits.length - 1];

अपने आप प्रयास करें

एक आयत्त एलीमेंट को देखें

एक एकदम सुरक्षित तरीका से एक आयत्त बार-बार देखने के लिए "for" चक्रगति :

उदाहरण

var fruits, text, fLen, i;
fruits = ["Banana", "Orange", "Apple", "Mango"];
fLen = fruits.length;
text = "<ul>";
for (i = 0; i < fLen; i++) {
     text += "<li>" + fruits[i] + "</li>";
} 

अपने आप प्रयास करें

आप इसके अतिरिक्त Array.forEach() तरीका:

उदाहरण

var fruits, text;
fruits = ["Banana", "Orange", "Apple", "Mango"];
text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
function myFunction(value) {
  text += "<li>" + value + "</li>";
}

अपने आप प्रयास करें

एक्सेस को नया एलीमेंट जोड़ना

एक्सेस को नया एलीमेंट जोड़ने का सबसे अच्छा तरीका push() तरीका:

उदाहरण

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Lemon");                // fruits में एक नया एलीमेंट (Lemon) जोड़ा जाता है

अपने आप प्रयास करें

इसके अतिरिक्त length एक्सेस को नया एलीमेंट जोड़ने के लिए

उदाहरण

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[fruits.length] = "Lemon";     // fruits में एक नया एलीमेंट (Lemon) जोड़ा जाता है

अपने आप प्रयास करें

चेतावनी !

सबसे उच्च सूचकांक वाले एलीमेंट को जोड़ने से एक्सेस के अनियमित "छेद" बन सकता है

उदाहरण

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[6] = "Lemon";                 // fruits में एक नया एलीमेंट (Lemon) जोड़ा जाता है

अपने आप प्रयास करें

एक्सेसस

बहुत से प्रोग्रामिंग एलीमेंट नामक सूचकांक वाले एक्सेस का समर्थन करते हैं

नामक सूचकांक वाले एक्सेस वाले एक्सेस को एक्सेसस नामक एक्सेस (या हैश) कहा जाता है

जेसक्रिप्ट गैर समर्थितनामक सूचकांक वाले एक्सेस के लिए उपयोग किया जा सकता है

जेसक्रिप्ट में, एक्सेस केवलनंबर इंडेक्स.

उदाहरण

var person = [];
person[0] = "Bill";
person[1] = "Gates";
person[2] = 62;
var x = person.length;          // person.length 3 बटन लॉग करता है
var y = person[0];              // person[0] "Bill" बटन लॉग करता है

अपने आप प्रयास करें

चेतावनी !

अगर आप नामक सूचकांक का उपयोग करते हैं, तो JavaScript एक्सेस को मानक ऑब्जेक्ट के रूप में पुनर्विन्यास करेगा。

इसके बाद, सभी एक्सेस में नियमित तरीके से गलत परिणाम प्राप्त होगा。

उदाहरणः

var person = [];
person["firstName"] = "Bill";
person["lastName"] = "Gates";
person["age"] = 62;
var x = person.length;         // person.length 0 बहाल करेगा
var y = person[0];              // person[0] undefined बहाल करेगा

अपने आप प्रयास करें

एक्सेसज़ और ऑब्जेक्ट की अंतरा

JavaScript मेंएक्सेसज़इस्तेमाल करेंनंबर इंडेक्स.

JavaScript मेंऑब्जेक्टइस्तेमाल करेंनामक इंडेक्स.

एक्सेसज़ विशेष प्रकार के ऑब्जेक्ट हैं जिनके पास नंबर इंडेक्स हैं。

एक्सेसज़ कब और ऑब्जेक्ट कब इस्तेमाल करना चाहिए?

  • JavaScript एक्सेसज़ कोई एक्सेसज़ नहीं समर्थित करता
  • यदि आप एलीमेंट का नाम चाहते हैंशब्द (पाठ)तोऑब्जेक्ट.
  • यदि आप एलीमेंट का नाम चाहते हैंनंबरतोएक्सेसज़.

new Array() से बचें

JavaScript के बिल्ट-इन एक्सेसज़ कन्स्ट्रक्टर को इस्तेमाल करने की जरूरत नहीं है new Array().

कृपया इसे इस्तेमाल करें [] इसके बजाय!

नीचे दो अलग-अलग वाक्यों से नाम "points" वाला नया खाली एक्सेसज़ बनाया गया है:

var points = new Array();         // खराब
var points = [];                  // अच्छा

नीचे दो अलग-अलग वाक्यों से छह नंबरों वाला नया एक्सेसज़ बनाया गया है:

var points = new Array(40, 100, 1, 5, 25, 10); // खराब
var points = [40, 100, 1, 5, 25, 10];          // अच्छा

अपने आप प्रयास करें

new क्लीयर कीवर्ड्स केवल कोड को जटिल बनाता है। यह विशेष अपरिदृश्य नतीजे भी पैदा करता है:

var points = new Array(40, 100);  // दो एलीमेंट वाला एक्सेसज़ (40 और 100) बनाया गया

अगर एक एलीमेंट को हटा दिया जाए तो क्या होगा?

var points = new Array(40);       // 40 अनिर्दिष्ट एलीमेंट वाला एक्सेसज़ बनाया गया!!

अपने आप प्रयास करें

एक्सेसज़ को पहचानना कैसे?

सामान्य समस्या है: मैं कैसे जानूं कि किसी वेरियेबल एक एक्सेसज़ है या नहीं?

समस्या यह है कि JavaScript ऑपरेटर typeof बहाल करता है "ऑब्जेक्ट" :

var fruits = ["Banana", "Orange", "Apple", "Mango"];
typeof fruits;             // ऑब्जेक्ट बहाल करता है

अपने आप प्रयास करें

typeof ऑपरेटर "ऑब्जेक्ट" बहाल करता है क्योंकि JavaScript एक्सेसज़ एक ऑब्जेक्ट है。

समाधान 1:

इस समस्या को हल करने के लिए ECMAScript 5 ने नई विधि निर्धारित की Array.isArray():

Array.isArray(fruits);     // वास्तव में true

अपने आप प्रयास करें

इस समाधान की समस्या यह है ECMAScript 5 पुराने ब्राउज़रों का समर्थन नहीं किया जाता.

समाधान 2:

अपने आप का isArray() फ़ंक्शन इस समस्या को हल करने के लिए है:

function isArray(x) {
    return x.constructor.toString().indexOf("Array") > -1;
}

अपने आप प्रयास करें

यदि पारामीटर एक एलिमेंट है तो उपरोक्त फ़ंक्शन हमेशा true लॉगिक रिटर्न करता है。

या और सही व्याख्या है: यदि ऑब्जेक्ट प्रथमा में "Array" शब्द है तो true लॉगिक रिटर्न करता है。

समाधान 3:

यदि ऑब्जेक्ट दिए गए कन्स्ट्रक्टर से बना है तो instanceof ऑपरेटर वास्तव में true लॉगिक रिटर्न करता है:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits instanceof Array     // वास्तव में true

अपने आप प्रयास करें