Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-动态地向对象添加属性会导致为所有属性设置最后一个值_Javascript_Loops_Object_Reference - Fatal编程技术网

Javascript-动态地向对象添加属性会导致为所有属性设置最后一个值

Javascript-动态地向对象添加属性会导致为所有属性设置最后一个值,javascript,loops,object,reference,Javascript,Loops,Object,Reference,我循环一些日期,将它们作为属性动态添加到对象中,并为每个日期指定一个值。属性被添加,但它们最终都被设置为上次迭代时指定的值 我想有一些参考问题。我不确定问题到底出在哪里,该怎么办 以下内容也可在带有日志记录的应用程序中使用 let dates = ['2020-04-28','2020-05-3','2020-05-16'] let pricesObj = {}; var entry = { price: 45, time_id: 2 } dates.map( d

我循环一些日期,将它们作为属性动态添加到对象中,并为每个日期指定一个值。属性被添加,但它们最终都被设置为上次迭代时指定的值

我想有一些参考问题。我不确定问题到底出在哪里,该怎么办

以下内容也可在带有日志记录的应用程序中使用

  let dates = ['2020-04-28','2020-05-3','2020-05-16']
  let pricesObj = {};

var entry = { 
    price: 45,
    time_id: 2
 }

dates.map( date => {

    entry.date = date

    if( !(date in pricesObj)){

      //Add new date entry
      pricesObj[date] = []
      pricesObj[date].push(entry)   //<-- this seems to be assigned to all dates, not just the current

    }

 })
console.log('updating price with obj: ' , JSON.stringify(pricesObj));
let dates=['2020-04-28'、'2020-05-3'、'2020-05-16']
让pricesObj={};
变量项={
价格:45,,
时间:2
}
dates.map(日期=>{
entry.date=日期
如果(!(价格中的日期)){
//添加新的日期条目
pricesObj[日期]=[]

pricesObj[date]。推送(条目)/您只创建了一个条目,然后将其推送到不同的数组。每次需要条目时,请重新创建条目

dates.forEach(date => {
  if (!(date in pricesObj)) {
    //Add new date entry
    pricesObj[date] = [{
      date,
      price: 45,
      time_id: 2
    }];
  }
});

您没有为原始日期数组中的每个项目创建一个新数组,因此不要使用map。要进行迭代,请使用forEach。

您只创建了一个条目,然后将其推送到不同的数组中。每次需要时都重新创建条目

dates.forEach(date => {
  if (!(date in pricesObj)) {
    //Add new date entry
    pricesObj[date] = [{
      date,
      price: 45,
      time_id: 2
    }];
  }
});

您没有为原始日期数组中的每个项目创建新数组,因此不要使用map。要进行迭代,请使用forEach。

谢谢,这很有效。因此我无法在循环外部创建条目变量有点令人费解,但是,很好的提示!谢谢,这很有效。因此我无法在循环外部创建条目变量有点令人费解,但是,很好提示!