如何通过传入字符串变量获取JavaScript对象的对应属性值
解决方案
核心问题梳理
你代码的写法存在两个错误:
selectedItems是数组结构,你需要先拿到数组内的目标对象元素,示例中目标对象在数组的第0位,要先取selectedItems[0]- 点语法不支持传入变量作为属性名,要通过变量动态获取对象属性,必须使用方括号语法
正确代码实现
var c = "Rice"; // 注:你示例中的{[1]}属于不合法JS语法,实际使用时替换为合法的对象结构即可 var selectedItems = [{ "Rice": {[1]} }]; // 先取数组第0项,再用变量c作为键取值 console.log(selectedItems[0][c]); // 输出结果符合预期:{[1]}
扩展适配(数组存在多个对象的场景)
如果你的selectedItems数组内有多个对象,需要遍历匹配对应键名,可以用下面的通用方法:
function getItemByKey (itemArray, targetKey) { for (const item of itemArray) { if (Object.prototype.hasOwnProperty.call(item, targetKey)) { return item[targetKey] } } return undefined // 未匹配到对应键时返回 } // 调用示例 console.log(getItemByKey(selectedItems, c))
内容的提问来源于stack exchange,提问作者Thomas James
相关产品推荐
相关产品推荐

