परिभाषित कार्यों या वैरिएबल के गुणों को गतिशील रूप से एक्सेस करें - जावास्क्रिप्ट, प्रदर्शन

मैंने ऑब्जेक्ट्स के गुणों तक पहुंचने के बारे में पढ़ने के लिए समय निकाला, लेकिन मेरी समस्याओं को हल करने का कोई तरीका नहीं मिला।

  1. आइए मान लें कि मेरे पास 10 arrays हैं, नाम arr1, arr2, arr3 ... arr10। मैं बिना उपयोग किए सभी सरणी की लंबाई तक कैसे पहुंचूँगा eval()? मैंने इसे एक के साथ किया for लूप, और eval("arr" + i + ".length")। मुझे पता है arr1["length"] काम करता है, लेकिन सभी सरणी की लंबाई तक कैसे पहुंचे? एक लूप का उपयोग कर?
  2. मैं इस तरह के कार्यों तक कैसे पहुंचूँगा split(), splice() या pop() ... इन सभी सरणीओं में से?
  3. हमें कहने दें arr1 = ["tab1", "tab2"], कहा पे tab1, tab2 बाद में सरणी के रूप में परिभाषित किया जाता है। अगर मैं लंबाई तक पहुंच बनाना चाहता हूं tab1 से arr1 मुझे कैसे करना चाहिए? और अगर मैं सरणी पर परिभाषित कार्यों तक पहुंच बनाना चाहता हूं?

उत्तर:

जवाब के लिए 0 № 1

आपको इन सभी सरणी को माता-पिता को ले जाना चाहिए object या array

इसके अलावा आपको टालना नहीं चाहिए eval। देखें जावास्क्रिप्ट eval फ़ंक्शन का उपयोग क्यों एक बुरा विचार है?

var arr1 = [1,2];
var arr2 = [1,2,3,4];
var arr3 = [1,2,3];
var arr4 = [1,2,6,4,3,6,];
var arr5 = [1];

var obj = {
array1: arr1,
array2: arr2,
array3: arr3,
array4: arr4,
array5: arr5
}

Object.keys(obj).forEach(function(o){
document.write(obj[o].length + "<br/>");
});


जवाब के लिए 0 № 2

आइए हम कहें कि मेरे पास 10 arrays हैं, नाम arr1, arr2,arr3 ... arr10। किस तरह क्या मैं eval () का उपयोग किए बिना सभी सरणी की लंबाई तक पहुंच जाएगा? मैंने इसे लूप के साथ किया, और eval ("arr" + i + ".ength")। मुझे पता है arr1 ["लंबाई"] काम करता है, लेकिन सभी सरणी की लंबाई तक कैसे पहुंचे? एक लूप का उपयोग कर?

यदि इन सरणी को फ़ंक्शन के अंदर निम्न के रूप में परिभाषित किया गया है

var arr1 = [];
var arr2 = [];

फिर आप उन्हें नाम से नहीं पहुंच सकते हैं।

आपको किसी ऑब्जेक्ट के अंदर सरणी को परिभाषित करने की आवश्यकता है। उदाहरण के लिए

var obj = {
"arr1" : [1,2],
"arr2" : [2,3]
}

यदि सरणी नाम पता है, तो आप कर कर सरणी का उपयोग कर सकते हैं

console.log(obj.arr1);

या

console.log(obj["arr" + 1 ]); //1 can be replaced by iterating i

हालांकि, यदि इन सरणी को वैश्विक संदर्भ (किसी भी फ़ंक्शन के बाहर) में परिभाषित किया गया है, तो आप उन्हें विंडो ऑब्जेक्ट के माध्यम से एक्सेस कर सकते हैं।

window["arr1"]

आइए arr1 = ["tab1", "tab2"] कहें, जहां टैब 1,टैब 2 बाद में परिभाषित किया गया है सरणी के रूप में। अगर मैं एआर 1 से टैब 1 की लंबाई तक पहुंच बनाना चाहता हूं तो कैसे करना चाहिए मैं करता हूँ? और अगर मैं सरणी पर परिभाषित कार्यों तक पहुंच बनाना चाहता हूं?

यदि टैब 1 को "var tab1 = [];" के रूप में परिभाषित किया गया है तो आप इसे नाम के माध्यम से नहीं पहुंच सकते हैं।

आपको उन ऑरे को फिर से ऑब्जेक्ट में लपेटने की ज़रूरत है।

var obj = {"tab1" : []};

फिर आप इसे कर कर एक्सेस कर सकते हैं

console.log(obj[arr1[0]]);

जवाब के लिए 0 № 3

यदि आप पहले से ही सरणी की संख्या नहीं जानते हैं, तो सरणी की एक सरणी भी ठीक काम करती है:

var arrays = [[1,2], [1,2,3,4], [1,2,3], [1,2,6,4,3,6,], [1]];

for (var i = 0; i < arrays.length; i++) {
console.log(arrays[i].length);
document.write("<p>[" + arrays[i] + "].length = " + arrays[i].length + "</p>");
}


संबंधित सवाल
सबसे लोकप्रिय