一个有点倾斜的问题,我没弄清楚。
我想从两个数组生成一个对象并给它们键,如下所示:
var A = [1, 2, 3, 4]; var B = [7, 8, 9, 19];
[ { "x": 1, "y": 7 }, { "x": 2, "y": 8 }, { "x": 3, "y": 9 }, { "x":
4, "y": 19 } ]
我写了下面的代码:
var myData = []; var A = [1, 2, 3, 4]; var B = [7, 8, 9, 19];
A.forEach( function (item, index) {
myData.push( { x: A[item], y: B[item] });
});
但是它的输出是
[ { "x": 2, "y": 8 }, { "x": 3, "y": 9 }, { "x": 4, "y": 19 }, {} ]
通过在函数中放入 [item - 1],它可以按我希望的那样工作,但我不明白为什么我看到的 w3School 示例看起来非常简单并且从索引 0 开始工作:
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_foreach
我的 fiddle 示例:https://jsfiddle.net/53p5b3w8/5/
最佳答案
你很接近,只需将 item
替换为 index
A.forEach( function (item, index) {
myData.push( { x: A[index], y: B[index] });
});
或者只是
A.forEach( function (item, index) {
myData.push( { x: item, y: B[index] });
});
基本上,当您说 A[item] 时,它采用 values
(1,2,3,4) 而不是 index
(0,1,2,3 ).
演示
var A = [1, 2, 3, 4]; var B = [7, 8, 9, 19];
var myData = [];
A.forEach( function (item, index) {
myData.push( { x: item, y: B[index] });
});
document.body.innerHTML += JSON.stringify( myData, 0, 4 )
关于Javascript:foreach 跳过第一个索引 (0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37188364/