如何在C#动态列表中添加属性,实现按名称而非索引访问?
给动态列表对象添加name属性,实现按名称访问
嘿,我懂你想要的效果了!你有个只带amount属性的动态列表,想给列表里第1个和第2个元素(也就是索引[0]和[1])加上name属性,这样之后不用记索引,直接通过名称就能访问对应的对象,对吧?
我给你两种常用的解决方案,根据你的场景选就行:
方案一:直接给目标对象添加name属性
如果你的列表已经存在,直接通过索引定位对象,然后给它们添加name属性就好,非常直接:
// 假设这是你当前的动态列表 const dynamicList = [ { amount: 150 }, { amount: 250 }, { amount: 350 } ]; // 给索引0和1的对象添加name属性 dynamicList[0].name = "PrimaryItem"; dynamicList[1].name = "SecondaryItem";
之后你就可以通过name来查找对应的对象了,比如:
// 通过name找到目标对象并访问amount const primaryItem = dynamicList.find(item => item.name === "PrimaryItem"); console.log(primaryItem.amount); // 输出150
方案二:转成键值对映射(更便捷的访问方式)
如果你希望之后的访问更直观,不用每次都调用find,可以把这两个对象转成一个以name为键的映射对象:
// 基于原列表创建映射 const itemMap = { PrimaryItem: dynamicList[0], SecondaryItem: dynamicList[1] }; // 直接通过名称访问,一步到位 console.log(itemMap.PrimaryItem.amount); // 输出150 console.log(itemMap.SecondaryItem.amount); // 输出250
注意事项
如果你的列表是从接口或其他动态来源获取的,记得先判断列表长度,避免索引越界:
// 假设从接口获取动态列表 fetch('/your-data-source') .then(response => response.json()) .then(list => { // 确保列表至少有2个元素再添加属性 if (list.length >= 2) { list[0].name = "PrimaryItem"; list[1].name = "SecondaryItem"; } // 后续操作... });
内容的提问来源于stack exchange,提问作者Jael Saavedra
相关产品推荐
相关产品推荐

