uni-app 【uts】const一个对象,其属性名为其他对象的属性值,这种写法怎么实现?
uni-app 【uts】const一个对象,其属性名为其他对象的属性值,这种写法怎么实现?
export const DISCOUNT_TYPE = {
jutuike: 1,
}
export const DISCOUNT_TYPE_PLATFORM = {
[DISCOUNT_TYPE.jutuike]: "jutuike"
}
19:10:09.625 error: Expecting property name or receiver type
19:10:09.625 at common/constants.uts:57:2
19:10:09.625 55 | }
19:10:09.625 56 | export const DISCOUNT_TYPE_PLATFORM = {
19:10:09.625 57 | [DISCOUNT_TYPE.getNumber(jutuike)]: "jutuike",
19:10:09.625 | ^
19:10:09.625 59 | }
19:10:09.625 error: Property getter or setter expected
19:10:09.625 at common/constants.uts:57:2
19:10:09.625 55 | }
19:10:09.625 56 | export const DISCOUNT_TYPE_PLATFORM = {
19:10:09.625 57 | [DISCOUNT_TYPE.getNumber(jutuike)]: "jutuike",
19:10:09.625 | ^
19:10:09.625 59 | }
动态key请使用UTSJSONObject或Map
有具体示例不,感谢
回复 DCloud_UNI_FengXY: 好的感谢
顶一下
在uni-app中,你可以使用JavaScript的计算属性名称(computed property names)来创建一个对象,其属性名由其他对象的属性值决定。这通常通过使用方括号([]
)语法来实现。以下是一个具体的代码案例,展示了如何实现这一功能:
// 假设我们有一个对象,其中包含一些属性名作为值
const propertyNames = {
firstName: 'first',
lastName: 'last',
age: 'years'
};
// 我们希望创建一个新对象,其属性名由 propertyNames 对象的值决定
const values = {
first: 'John',
last: 'Doe',
years: 30
};
// 使用计算属性名称来创建新对象
const user = {};
for (let key in propertyNames) {
if (propertyNames.hasOwnProperty(key)) {
const newKey = propertyNames[key];
user[newKey] = values[newKey];
}
}
// 输出结果对象
console.log(user);
// 输出: { first: 'John', last: 'Doe', years: 30 }
在这个例子中,我们首先定义了两个对象:propertyNames
和 values
。propertyNames
对象中的值将用作新对象 user
的属性名,而 values
对象则提供了相应的属性值。
然后,我们使用一个 for...in
循环遍历 propertyNames
对象。在循环内部,我们检查属性是否是 propertyNames
对象自身的属性(使用 hasOwnProperty
方法),以避免继承属性的干扰。接着,我们使用计算属性名称语法(user[newKey]
)来动态设置 user
对象的属性。
这种方法非常灵活,允许你根据运行时确定的值来动态创建对象属性。这在处理动态数据结构或需要将数据映射到不同属性名的情况下特别有用。
此外,如果你使用的是ES6或更高版本的JavaScript,你还可以使用 Object.keys()
、Object.values()
或 Object.entries()
方法来进一步简化代码,或者结合 reduce()
方法来构建对象。不过,上面的例子已经很好地展示了基本的实现方式。
在uni-app中,这种技术同样适用,因为uni-app主要使用Vue.js框架和JavaScript语言进行开发。你可以将上述代码片段直接嵌入到你的uni-app项目中,以实现动态属性名的对象创建。