Eval का उपयोग किए बिना ... मैं यह देखने की कोशिश कर रहा हूं कि क्या मुझे एक वेरिएबल से वैल्यू मिल सकती है जहां वैल्यू दूसरे वेरिएबल में स्टोर की जाती है। जैसे varA से 'ValueC' का मान प्राप्त करें जहाँ varA='varB' और varB='ValueC'

उपयोगकर्ता एक स्ट्रिंग दर्ज करेगा, जो नीचे 'UserSpecified' नामक चर के रूप में सिम्युलेटेड है। वे किसी भी वर्ण में प्रवेश कर सकते हैं और यदि मौजूदा चर से मेल नहीं खाता है ... ठीक है, मैं बस शून्य वापस कर दूंगा।

मुझे एहसास है कि मैं इसे एक eval() के साथ कर सकता हूं, लेकिन ऐसा लगता है कि मैं इसे बेहतर तरीके से करने की कोशिश कर रहा हूं।

मैंने जावास्क्रिप्ट में "Variable" वेरिएबल से ES2015+ स्वीकृत उत्तर की कोशिश की है? लेकिन मैं कोई सफलता नहीं मिल रही है। क्या मुझे कुछ याद आ रहा है या क्या मुझे एक eval के साथ रहना चाहिए?

let a  = "aye";
let b = "be";
let c = "sea";

let userSpecified="a";
let obj = {userSpecified};
let parm='userSpecified';

console.log(eval(userSpecified));  // This displays 'aye'

console.log(obj[parm]); // This displays 'a' but I would like it to display 'aye'
0
DBtake3 1 अगस्त 2019, 19:40

2 जवाब

सबसे बढ़िया उत्तर

यदि आप अपने कोड को इस तरह से पुनर्गठित कर सकते हैं कि कोई वस्तु मान धारण करती है, तो यह केवल मूल obj.key = val सिंटैक्स (बिल्कुल: obj[key] = val) है।

const obj = {
  a: "aye",
  b: "be",
  c: "sea"
}

const userSpecified = "a";

console.log(obj[userSpecified]); // expected: aye

यदि नहीं, तो चलो के बजाय var का उपयोग करें:

// pay attention that it's var not let
var a = "aye";

let userSpecified = "a";

console.log(window[userSpecified]) // expected: aye
1
muka.gergely 1 अगस्त 2019, 20:30

स्थानीय चर का मान गतिशील रूप से प्राप्त करना संभव नहीं है (eval से अलग)।

लेकिन आप डेटा को स्टोर करने के लिए किसी ऑब्जेक्ट का उपयोग कर सकते हैं (स्थानीय चर के नाम नहीं), और उस डेटा को डायनामिक कुंजियों के साथ एक्सेस कर सकते हैं।

मुझे लगता है कि आप यही चाहते हैं:

const data = {
  a: "1",
  b: "2",
  c: "3",
}

// Take the name of an object property and return its corresponding value.
function getValue(userSpecified) {
  return data[userSpecified]
}

console.log(getValue("a")) // 1
console.log(getValue("b")) // 2

console.log(getValue(someFormField.value))
0
Alex Wayne 1 अगस्त 2019, 20:25