我遇到了从javascript数组中获取值的问题。
struct MyNewStruct {
Q_GADGET
float m_range;
Q_PROPERTY(float range MEMBER m_range)
//Overload operator !=
bool operator!=(const MyNewStruct & val)
{
//Do check with local members and return true/false
}
};
Console.log结果:
颜色[颜色]:未定义
JSON.stringify(color): []
颜色:
var color = new Array();
for (var i = 0; i < datafeatures.length - 1; i++) {
color[datafeatures[i].properties.userid] = datafeatures[i].properties.linecolor;
}
snapshot.forEach(function (childSnapshot) {
var colour = childSnapshot.wp_user;
console.log(color[colour]);
console.log(JSON.stringify(color));
console.log(color);
console.log(colour);
}
颜色: 61
颜色[颜色]的预期输出:&#34;#d770ce&#34;
颜色[颜色]的实际输出:未定义。
颜色中有颜色,颜色是数字(键),但似乎无法从颜色中获取值。
答案 0 :(得分:3)
您可能想尝试更改行
var color = new Array();
到
var color = {};
您可能正在寻找的不是数组,而是javascript中的术语,object
。
修改强>
查看源代码并进行一些调试后,问题似乎是异步执行。您之后正在填充color
变量,这解释了为什么JSON.stringify
在打印时生成空对象,console.log
维护对变量的引用。
您需要确保首先填充color
变量。
关于我如何调试它的一些步骤,(使用chrome):
undefined
sources
标签,您将看到您的源代码color
确实是一个空对象color
的填充方式d3.json(
答案 1 :(得分:0)
这里的代码
for (var i = 0; i < datafeatures.length - 1; i++) {
color[datafeatures[i].properties.userid] = datafeatures[i].properties.linecolor;
}
看起来应该更像这样
for (var i = 0; i < datafeatures.length - 1; i++) {
color.push({[datafeatures[i].properties.userid]: datafeatures[i].properties.linecolor})
}
我想,它会为你提供你正在寻找的阵列。