[英]JavaScript Array not indexing properly?
var graphdata = [["A", "B", "C", "D"], [0.5, 0.25, 0.5, 0.25]];
function randomData (){
var labels = graphdata[0]
var labels2 = graphdata[1];
console.log();
return labels.map(function(labels, labels2){
console.log(labels2);
return { label: labels , value: labels2 }
});
}
labels
正确地针对A,B,C,D进行迭代。但是, labels2
被压缩为0、1、2、3,我不确定为什么。 就在return labels.map()
调用之前,如果我console.log()
,我可以正确输出分数,但是之后这些值消失了,我不确定为什么。
给予map
回调的第二个参数是迭代中元素的索引。
看起来你想要的是
return labels.map(function(label, i){
return { label: label , value: labels2[i] }
});
Array.map()使用当前Element , 当前索引 (可选)和原始数组 (可选)的参数进行回调。
randomArray.map(function(currentElement, currentIndex, randomArrayAgain) { /*...*/})
您可以这样做:
labels.map(function(label, index) {
return { label: label, value: labels2[index] }
});
map()
将遍历labels
并且在每次迭代中您都可以访问当前标签和索引。 仅当以正确的方式对数组进行排序时,此解决方案才有效。
请在这里阅读map
文档。 map函数的回调有两个参数,第一个是列表中要迭代的每个项目,第二个是列表中该项目的索引或键。 地图回调中的labels2
变量不引用您创建的变量,而是引用要映射到的项的索引。 您的实现可以编写如下,并且是相同的。
labels.map(function(eachLabel, key) {
console.log(key); // 0, 1, 2, 3... (label.length - 1)
return { label: eachLabel , value: key }
});
map()
不能这样工作。
map()
的第二个参数是它当前正在查看的元素的索引。 因此,每次通过labels
时,它都会将labels
的第一个参数labels
设置为当前正在将labels
集合labels2
映射到labels
索引的元素。
详情如下: https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.