在push方法中未调用for循环中的Javascript变量



我试着做items.map((item) => arrs.push({item._id:item.word}));,但键的第一个元素根本不起作用,所以我写了一个基本的for循环。现在创建for循环可以很好地工作,并且控制台日志记录在循环之后显示值的正确信息,但所有值的键都显示"0";temp";而不是来自items[i]._id的期望id。在VS代码中,CCD_;temp被声明但其值从未被读取;。现在,如果我在let temp...arrs.push...之间放置一个console.log(temp),它将正确地注销临时变量中的值。

const arrs = [];
for (let i = 0; i < items.length; i++) {
let temp = items[i]._id;
arrs.push({ temp: items[i].word });
}

我认为temp在同一范围内,所以它应该起作用。不知道发生了什么。

我尝试创建不同的作用域,但没有成功。

您正在声明属性名称为"temp";,而不是将其赋值。如果您试图使属性名称成为temp,则可以使用计算出的属性名称,方法是用方括号[]将其括起来。

const arrs = [];
for (let i = 0; i < items.length; i++) {
arrs.push({[items[i]._id]: items[i].word});
}

这将创建一个具有关键字items[i]._id和值items[i].word的对象。更好的是,您可以使用map:

const arrs = items.map(item => { return {[item._id]: item.word}});

遵循以下代码片段,创建了一个对象并在循环中的arrs中推动它们:

let items = [
{_id:'1',
word:'test'
},
{_id:'2',
word:'test2'
},
{_id:'3',
word:'test3'
},
{_id:'4',
word:'test4'
}
];
let arrs = [];        
for (var i = 0; i < items.length; i++){
var obj = {
[items[i]._id] : items[i].word
}
arrs.push(obj);
}

console.log(arrs)

let items = [
{_id:'1',
word:'test'
},
{_id:'2',
word:'test2'
},
{_id:'3',
word:'test3'
},
{_id:'4',
word:'test4'
}
];
let arrs = [];        
for (var i = 0; i < items.length; i++){
var obj = {
[items[i]._id] : items[i].word
}
arrs.push(obj);
}
console.log(arrs)

最新更新