Javascript 在QML中声明JS dict时如何使用JS数组作为键
在QML JS实现中,我可以这样写:Javascript 在QML中声明JS dict时如何使用JS数组作为键,javascript,qt,dictionary,qml,qtquick2,Javascript,Qt,Dictionary,Qml,Qtquick2,在QML JS实现中,我可以这样写: property var dict1: ({}) property var dict2: { 'a':1, 'b':2, 'c':3 } // property var dict3: { [0,0]:1, [1,4]:5, [2,4]:3 } // can't do this! // but can do this. Component.onCompleted: { dict1[[0,0]] = 1 dict1[[1,4]] = 5
property var dict1: ({})
property var dict2: { 'a':1, 'b':2, 'c':3 }
// property var dict3: { [0,0]:1, [1,4]:5, [2,4]:3 } // can't do this!
// but can do this.
Component.onCompleted: {
dict1[[0,0]] = 1
dict1[[1,4]] = 5
dict1[[2,4]] = 3
}
因此,最后一部分使用JS数组作为dict中的键。但是,第3行(dict3)中的声明是不可能的。我不明白,如果预期的结果通过其他方式是可能的,为什么一个符号不可能
所以我的问题是:如果不需要组件.onCompleted
或类似的hack,如何实例化dict
?
如果没有办法,请说明原因。JS对象键始终是字符串。没有数组作为键或对象作为键这样的东西
dict1[[0,0]]=1
严格等同于dict1['0,0']=1
底线是属性分配和属性访问自动将键强制转换为字符串
请尝试以下操作:
dict1[dict2] = 42
console.log(JSON.stringify(dict1))
输出:{“0,0”:1,“1,4”:5,“2,4”:3,“[object]”:42}
表达式dict2
被转换为其字符串表示形式并用作键。然后,您可以使用以下任意一项访问值42
dict1[“[对象]”]
dict1[dict2]
因为dict1[dict1]
返回toString(dict1)
“[object object]”
因为dict1[({})]
返回toString(({}))
“[object object]”
这些强制转换在对象创建时的执行方式不同,这意味着您不能执行
属性var dict2:{[1,2]:3}
。但是,属性变量dict2:{“1,2”:3}
可以正常工作。JS对象键始终是字符串。没有数组作为键或对象作为键这样的东西
dict1[[0,0]]=1
严格等同于dict1['0,0']=1
底线是属性分配和属性访问自动将键强制转换为字符串
请尝试以下操作:
dict1[dict2] = 42
console.log(JSON.stringify(dict1))
输出:{“0,0”:1,“1,4”:5,“2,4”:3,“[object]”:42}
表达式dict2
被转换为其字符串表示形式并用作键。然后,您可以使用以下任意一项访问值42
dict1[“[对象]”]
dict1[dict2]
因为dict1[dict1]
返回toString(dict1)
“[object object]”
因为dict1[({})]
返回toString(({}))
“[object object]”
这些强制转换在对象创建时的执行方式不同,这意味着您不能执行
属性var dict2:{[1,2]:3}
。但是,属性变量dict2:{“1,2”:3}
可以正常工作。谢谢!现在我明白了!谢谢现在我明白了!