【发布时间】:2021-06-29 20:26:32
【问题描述】:
我正在尝试根据对象数组值将数据动态分配给变量。 我将介绍一个简化的数据结构:
const data = [{"age":25,"name":"Michael"},{"age":20,"name":"Lara"}]
const data2 = [{"age":26,"name":"Sarah"},{"age":21,"name":"David"}]
我想给变量赋值。例如,我知道这是可行的:
const arr = 'data'
const zero = '0'
const a = 'age'
const test = `${data[zero][a]}`
console.log(test) // returns 25
但是我可以动态分配它吗(可能是嵌套的模板文字)?
const test = `${arr[zero][a]}`
console.log(test) // does not work, because arr is a string
const test = `${${arr}[zero][a]}`
console.log(test) // does not work
有什么方法可以实现吗? 提前谢谢!
编辑:
我过度考虑了解决方案(试图使用模板文字)。
为了解决这个问题,感谢ggorlen 的输入,我改变了我的数据存储方式。这样,动态访问数据就更容易了。该解决方案与Sowmen Rahman 的答案非常相似。
我太努力想以特定方式解决问题,而另一种方法更明智!
【问题讨论】:
-
欢迎来到 SO!如果您尝试将字符串
arr = 'data'视为变量名,则可以使用this[arr],但使用字符串数据作为变量名is generally not a good pattern。你really trying to accomplish 这些阴谋诡计是什么?感谢您的澄清。 -
我正在遍历数据数组,我需要根据变量从数组中提取值。然后将这些值分配给一个新变量。我会检查那个链接,谢谢!
-
我明白了,谢谢。然后一般的解决方案是使用二维数组。而不是
data、data1、data2、...data4532、data4533作为单独的松散变量(基本上是this上的键),使用data = [[{"age":25,"name":"Michael"},{"age":20,"name":"Lara"}], [{"age":26,"name":"Sarah"},{"age":21,"name":"David"}]]。然后你可以遍历data并使用data[i][j]访问ith 内部数组上的元素j。首先,您如何获得单独的data变量?尽可能将事物打包到数据结构中,以便轻松操作它们。 -
感谢您的帮助。你是对的,我改变了我的数据的存储方式并解决了它。当没有必要时,我会去做一些过于复杂的事情。
-
很高兴听到。您可能想发布self answer 描述问题所在以及您如何解决它,然后接受它,以帮助未来与您有相同情况的访问者。当前接受的答案并没有真正触及问题的核心。
标签: javascript arrays javascript-objects template-literals