React中如何在循环内动态更新对象的属性值
动态根据参数指定属性过滤数组
你遇到的问题核心是动态访问对象属性:点语法(.)只能搭配固定属性名,没法直接用变量替代,这时候必须用方括号语法([])实现动态属性访问。
另外你的代码还有个小问题:filter方法会返回过滤后的新数组,但你没有把结果赋值给变量或返回出去,导致函数没有有效输出。
修正后的代码
let mainArr = [{ name: "ram", age: 30, nametwo: "shiva" }, { name: "geetha", age: 20, nametwo: "anjali" } ]; let compareArr = ["ram"]; const test = (param) => { // 用方括号语法动态访问对象属性 return mainArr.filter(obj => compareArr.includes(obj[param])); } // 调用示例 console.log(test("name")); // 输出: [{name: "ram", age: 30, nametwo: "shiva"}] console.log(test("nametwo")); // 输出: [](compareArr中无shiva/anjali)
额外优化:避免属性不存在的情况
如果担心传入的param对应的属性在对象里不存在,可以加个判断,防止出现undefined导致的意外:
const test = (param) => { return mainArr.filter(obj => obj.hasOwnProperty(param) && compareArr.includes(obj[param]) ); }
内容的提问来源于stack exchange,提问作者Divakar R
相关产品推荐
相关产品推荐

