Javascript Object.values

Javascript Object.values,object,Object,我有一个有年份和价值的物体 const years = {}; rows.forEach(row => { const cols = row.split(';'); years[cols[0]] += cols[3]; }); 这部分很好用 我想取消这些价值观。我试过这个: Object.values(years), 但它不起作用。可能值设置不正确。基本上,您需要一个对象 years = {} 然后,使用默认值表示未初始化的值,并使用数字值表示相加 years[cols[0]

我有一个有年份和价值的物体

const years = {};
rows.forEach(row => {
  const cols = row.split(';');
  years[cols[0]] += cols[3];
});
这部分很好用

我想取消这些价值观。我试过这个:

Object.values(years),

但它不起作用。可能值设置不正确。

基本上,您需要一个对象

years = {}
然后,使用默认值表示未初始化的值,并使用数字值表示相加

years[cols[0]] = (years[cols[0]] || 0) + +cols[3];
常数 数据='xyz\n2006;7.1.20;0\n2006;8.1.40;2007年1月;1.1.30;0\n2007;6.1.60;0', 年={}, 行=数据。拆分'\n'。切片1//这是一个简单的csv文本文件 rows.forEachrow=>{ const cols=行。拆分“;”; 年[cols[0]]=年[cols[0]| | 0++cols[3]; }; console.logObject.keysyears;
console.logObject.valuesyears 基本上你需要一个物体

years = {}
然后,使用默认值表示未初始化的值,并使用数字值表示相加

years[cols[0]] = (years[cols[0]] || 0) + +cols[3];
常数 数据='xyz\n2006;7.1.20;0\n2006;8.1.40;2007年1月;1.1.30;0\n2007;6.1.60;0', 年={}, 行=数据。拆分'\n'。切片1//这是一个简单的csv文本文件 rows.forEachrow=>{ const cols=行。拆分“;”; 年[cols[0]]=年[cols[0]| | 0++cols[3]; }; console.logObject.keysyears; console.logObject.valuesyears 当你这样做的时候

years[cols[0]] += cols[3];
如果年[cols[0]]以前未初始化,则该值将未定义。如果将数字添加到未定义,则该数字将为NaN

初始化如下:

if (!years[cols[0]]) years[cols[0]] = 0;
当你这样做的时候

years[cols[0]] += cols[3];
如果年[cols[0]]以前未初始化,则该值将未定义。如果将数字添加到未定义,则该数字将为NaN

初始化如下:

if (!years[cols[0]]) years[cols[0]] = 0;

请添加一个数据示例和想要的结果。那么,您得到了什么?顺便说一句,误用数组而不是对象,元素没有初始值。仅添加一个值就返回undefined2,其中undefined是项的值,数字是拆分行的字符串。您需要年={}和以后的年[cols[0]+=years[cols[0]]| | 0++cols[3];你可能想将年份初始化为对象,而不是数组…?你能在forEach循环后执行console.logyears并添加结果吗?请添加一个数据示例和想要的结果。那么,你得到了什么?顺便说一句,滥用数组而不是对象,元素没有init值。仅添加一个值就返回undefined2,其中undefined是项的值,数字是拆分行的字符串。您需要年={}和以后的年[cols[0]+=years[cols[0]]| | 0++cols[3];你可能想初始化年份作为一个对象,而不是数组…?你能在forEach循环后做一个console.logyears并添加结果吗?是的,我错过了对象初始化器。它返回2007:NaN我如何解决它?你需要=而不是+=。是的,我错过了对象初始化器。它返回2007:NaN如何解决它?您需要=而不是+=。