在Svelte/JS中能否将对象键名作为参数传递使用?
问题解决方法
你当前的写法无法读取变量对应的属性,是因为点操作符访问对象属性时,后续的标识会被视为固定的属性名字面量,你写data[i].key时,实际是在尝试读取每个对象上名为key的属性,而非key变量存储的属性名。
修正方案
使用方括号属性访问语法即可实现动态属性读取,将data[i].key替换为data[i][key],方括号内可以传入任意变量或表达式,运行时会自动将运算结果作为属性名读取对应值。
修正后的完整代码如下:
export let data = []; export let key; function cleanUp(data, key) { // 先初始化结果数组,原代码中缺少这一步会报错 const newArray = []; for (let i = 0; i < data.length; i++) { let d = data[i][key]; newArray.push(d); } return newArray; }
可选优化写法
你可以直接用数组内置的map方法简化逻辑,不需要手动编写循环:
function cleanUp(data, key) { return data.map(item => item[key]) }
内容的提问来源于stack exchange,提问作者Nathan Gallo
相关产品推荐
相关产品推荐

