Javascript:foreach跳过第一个索引(0)

时间:2016-05-12 13:27:14

标签: javascript foreach

一个有点倾斜的问题,我无法弄清楚。

我想从两个数组生成一个对象并给它们键,如下所示:

@,

我写了以下代码:

 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] });   
});

通过在函数中放入[item - 1],它可以按照我的喜好工作,但我无法理解为什么因为我所看到的w3School示例看起来非常简单并且从index-0开始工作:

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_foreach

我的小提琴示例:https://jsfiddle.net/53p5b3w8/5/

5 个答案:

答案 0 :(得分:6)

您已接近,只需将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 )

答案 1 :(得分:3)

尝试在循环中使用index而不是item,因为您正在遍历数组中的值而不是需要引用的索引:

A.forEach( function (item, index) {     
    myData.push( { x: A[index], y: B[index] });   
});

示例

var myData = [];
var A = [1, 2, 3, 4];
var B = [7, 8, 9, 19];

A.forEach(function(item, index) {
  myData.push({
    x: A[item - 1],
    y: B[item - 1]
  });
});

console.log(myData);
document.getElementById("demo").innerHTML = JSON.stringify(myData, null, 3);


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]
  });
});

console.log(myData);
document.getElementById("demo2").innerHTML = JSON.stringify(myData, null, 3);
<p id="demo"></p>
<br>
<p id="demo2"></p>

答案 2 :(得分:3)

这就是你所需要的:

var c = A.map((item, index) => ({x: A[index], y: B[index}));

答案 3 :(得分:3)

提一下,如果myData只包含两个数组,你也可以使用map:

var myData = A.map(function(item, index) {
  return { x: item, y: B[index] };
});

答案 4 :(得分:1)

数组索引将从0开始

            A.forEach( function (item, index) {     
                myData.push( { x: A[index], y: B[index] });   
            });

如果您使用数组A作为订单,则可以通过以下方法

不使用该数组
            B.forEach( function (item, index) {     
                myData.push( { x: index+1, y: B[index] });   
            });