我想创建一个这样的数组:
[{'b':0,'c':1,'d':2},{'b':1,'c':2,'d':3},{'b':2,'c':3,'d':4}]
如何在Javascript中执行此操作?
我试过这个:
for(i = 0; i < 3; i++){
var b = i;
var c = i+1;
var d = i+2;
};
dataResult={"b":b,"c":c,"d":d};
alert(dataResult) //not working result [{'b':0,'c':1,'d':2},{'b':1,'c':2,'d':3},{'b':2,'c':3,'d':4}]
答案 0 :(得分:2)
您只是覆盖'b','c','d'的值,并在最后将该值分配给'dataResult',因此您无法获得预期的结果。
试试这个。
dataResult = [];
for(i = 0; i < 3; i++){
dataResult.push({ 'b': i, 'c': i+1, 'd': i+2 });
};
console.log(dataResult);
答案 1 :(得分:1)
您必须在循环内创建对象,然后将其推送到数组:
const arr = [];
for (let i = 0; i < 3; i++) {
var b = i;
var c = i + 1;
var d = i + 2;
arr.push({ b, c, d });
}
console.log(arr);
但在这里使用Array.from
会更优雅:
const arr = Array.from({ length: 3 }, (_, i) => {
const b = i;
const c = i + 1;
const d = i + 2;
return { b, c, d };
});
console.log(arr);
答案 2 :(得分:1)
您在循环外创建对象。您需要在循环中创建对象。
尝试以下
var arr = [];
for(let i = 0; i < 3; i++){
var b = i;
var c = b+1; // as b = i, you can change c = b + 1
var d = c+1; // as c = i + 1, you can change d = c + 1
arr.push({b,c,d});
};
console.log(arr);
答案 3 :(得分:1)
在循环内创建对象并将其推送到数组
var arr = [];
for (var i = 0; i < 3; i++) {
let obj = {
b: i,
c: i + 1,
d: i + 2,
}
arr.push(obj)
};
console.log(arr)
答案 4 :(得分:1)
var myArr = [];
for(var i = 0; i < 3; i++){
var data = i;
myArr.push({
b: data,
c: data + 1,
d: data + 2
})
}
console.log(myArr)
答案 5 :(得分:0)
您在循环后设置b,c,d的值,因此它将最新的b,c,d值放在dataResult中。相反,您应该使用空数组初始化dataResult并在循环的每个步骤之后将值推送到数组
var a,b,c;
var dataResult = [];
for(i = 0; i < 3; i++){
b = i;
c = i+1;
d = i+2;
dataResult.push({"b":b, "c":c, "d":d});
};
alert(dataResult);