Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
NODE.JS:迭代对象数组,如果不存在,则创建一个新键_Node.js_Object_Javascript Objects - Fatal编程技术网

NODE.JS:迭代对象数组,如果不存在,则创建一个新键

NODE.JS:迭代对象数组,如果不存在,则创建一个新键,node.js,object,javascript-objects,Node.js,Object,Javascript Objects,我正在迭代一组数据,在我的例子中是一组对象。以下是其中2个数据点的示例: { violation_id: '211315', inspection_id: '268804', violation_category: 'Garbage and Refuse', violation_date: '2012-03-22 0:00', violation_date_closed: '', violation_type: 'Refuse Accumulation' }, { violation_id:

我正在迭代一组数据,在我的例子中是一组对象。以下是其中2个数据点的示例:

 {
violation_id: '211315',
inspection_id: '268804',
violation_category: 'Garbage and Refuse',
violation_date: '2012-03-22 0:00',
violation_date_closed: '',
violation_type: 'Refuse Accumulation' },

{
violation_id: '214351',
inspection_id: '273183',
violation_category: 'Building Conditions',
violation_date: '2012-05-01 0:00',
violation_date_closed: '2012-04-17 0:00',
violation_type: 'Mold or Mildew' }
我需要从中创建一个新的对象数组,每个“违例类别”属性一个。如果我正在创建的新数组中已经存在违例类别,我只需将信息添加到现有类别对象中(例如,我不会有两个“building conditions”对象,而只会添加到现有类别对象中)

但是,如果当前对象存在,我就很难将其指定给现有对象(很容易检查它是否存在,但反之亦然)。这是我目前正在尝试做的事情:

    if (violationCategory.uniqueCategoryName) {
  violationCategory.uniqueCategoryName.violations = results[i].violation_id;
  violationCategory.uniqueCategoryName.date = results[i].violation_date;
  violationCategory.uniqueCategoryName.closed =
    results[i].violation_date_closed;
} else {
  category.violations = results[i].violation_id;
  category.date = results[i].violation_date;
  category.closed = results[i].violation_date_closed;
  violationCategory.push(category);
}

在第一种情况下,如果这个类别(键)存在,我只需添加到它,在第二种情况下,这就是我正在努力的地方。谢谢你的帮助。谢谢大家。

如果钥匙上没有物体,只需在钥匙上添加一个空物体即可:

violationCategory.uniqueCategoryName = violationCategory.uniqueCategoryName || {};
只有这样,才能将您想要的数据添加到对象中

   violationCategory.uniqueCategoryName.violations = results[i].violation_id;
   violationCategory.uniqueCategoryName.date = results[i].violation_date;
   violationCategory.uniqueCategoryName.closed =
   results[i].violation_date_closed;
不需要任何条件


祝你好运

假设您有一个输入变量,它是一个对象数组,其中的对象看起来像问题的对象,您可以像这样生成输出:

var output = {};
for (var item of input) {
    if (!output[item.violation_category]) output[item.violation_category] = [];
    output[item.violation_category].push(item);
}

当然,您可以根据自己的需要对其进行自定义。

您是否希望按冲突分组\u类别?谢谢,伙计,如果我希望“类别名称”作为对象中的一个键存在,它本身包含一个带有日期、id和关闭值的对象……您知道我该怎么做吗?@TomK我不知道您在问什么。您希望uniqueCategoryName是一个变量吗?如果是这样,您可以使用如下变量访问对象:violationCategory[uniqueCategoryName]。whatEverSubKeyYouWant='value';没关系,我算出来了=)