NODE.JS:迭代对象数组,如果不存在,则创建一个新键
我正在迭代一组数据,在我的例子中是一组对象。以下是其中2个数据点的示例: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:
{
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';没关系,我算出来了=)