Javascript 来自 for 循环的变量不会在 push 方法中被调用

Javascript variable from for loop does not get called in push method

我试过 items.map((item) => arrs.push({item._id:item.word})); 但是键的第一个元素根本不起作用,所以我写了一个基本的 for 循环。现在创建 for 循环工作正常,并且循环后的控制台日志记录 arrs 显示值的正确信息,但所有这些键的键都将“temp”显示为字符串,而不是 items[i]._id 中所需的 id。在 VS 代码中,let temp=item... 中的 temp 变灰并显示“已声明 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)