[英]Get value by key from array javascript
我在从javascript数组获取值时遇到问题。
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);
}
Console.log结果:
颜色[颜色]:未定义
JSON.stringify(color): []
颜色:
[]
26: "#9d36ee"
45: "#b1c743"
56: "#f9c53c"
61: "#d770ce"
63: "#267fa1"
64: "#85002f"
68: "#78eca8"
92: "#a4a2e7"
length: 93
__proto__: Array(0)
颜色: 61
color [colour]的预期输出:“#d770ce”
color [colour]的实际输出:未定义。
颜色中包含某些内容,颜色是数字(键),但是似乎无法从颜色中获取值。
您可能想尝试更改行
var color = new Array();
至
var color = {};
您可能正在寻找的不是数组,而是javascript中的object
。
编辑
在查看了源代码并进行了一些调试之后,问题似乎出在异步执行上。 您稍后将填充color
变量,这解释了为什么JSON.stringify
在打印时会生成一个空对象,而console.log
保留对该变量的引用。
您将要确保首先填充color
变量。
有关如何调试此步骤的一些步骤(使用chrome):
undefined
的行号 sources
选项卡,在其中可以看到源代码 color
确实是一个空对象 color
是如何填充的 d3.json(
此代码在这里
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})
}
我认为,它将为您提供所需的阵列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.