[英]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.