无法使用变量动态访问对象属性

时间:2018-11-15 14:58:10

标签: javascript object variables key

我正在尝试使用变量添加查找对象的属性,但是它不起作用。当我编写变量的对象名称iso时,尽管变量和对象名称完全相同,但它仍在工作。

function calCulate(nrs){
const product = {DE2599:{name:"tet", bar:2.5, price: 3.5}};
var nr = document.getElementById(nrs).value;
var sku = ("prod" + nr);
var qty = ("qty" + nr);
var pric = ("price"+nr);
var pal = ("pallet"+nr);
var ctry = document.getElementById('country').value;
var x = document.getElementById(qty).value;
var test = document.getElementById(prod).value;
var tests = test.toString(); // way of getting the result
var testr = tests.indexOf(" "); // way of getting the result
var testt = tests.slice(0,testr); // way of getting the result
var uniqueID = ctry+testt; // this value returns DE2599
var mywindow = window.open('','PRINT','height=800,width=800');
var ter = product.uniqueID; // I use uniqueID because it can vary 
var tar = ter.price;
mywindow.document.write(tar); // this is not showing any result; but if I change the uniqueID with the actualy key, ie DE2599, it is working correctly

1 个答案:

答案 0 :(得分:1)

uniqueId不是product的属性,因此您的ter将存储undefined(并且tar应该会出现错误)。

当您需要使用变量的值来访问对象的属性时,需要使用方括号表示法。

const product = {DE2599:{name:"tet", bar:2.5, price: 3.5}};
let uniqueId = 'DE2599';

console.log('with dot notation');
console.log(product.uniqueId);
console.log('with bracket notation');
console.log(product[uniqueId]);

相关问题