一个有点倾斜的问题,我无法弄清楚。
我想从两个数组生成一个对象并给它们键,如下所示:
@,
我写了以下代码:
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/
答案 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] });
});