Javascript 函数计算对象属性的嵌套数组可能使用 reduce/map
Javascript function to count nested array of object properties possibly using reduce/map
我有一个问题,我已经查看了这里的一些简化问题,但我似乎无法想出办法解决这个问题。我有一组对象。每个对象都有相同的属性,大约有 30 个。每个属性都有完全不同类型的信息。我希望能够轻松地创建一个新的 object/array。我的例子如下。
var array = [{parts: 12345, purchased: "yes", customerId: 12541},
{parts: 12432, purchased: "no", customerId: 55514},
{parts: 12345, purchased: "Yes", customerId: 44421}];
我想做的是根据数组中的信息类型找到一种提取有用数据的方法。例如:
some_function(array) {
...
return { parts: {uniquePart: 12345, timesListed: 2}};
}
}
我可能还想扩展返回的对象并计算购买次数是或否。我尝试了多种方法,但我认为这更像是一个数据模型问题,而不是编程问题。
我正在从收据字符串中解析这些数据。解析完纯文本字符串后,我会为每笔交易获得一个 30 属性 的大对象。一些属性也是嵌套对象或数组。
我想关联多个事务中的数据。也许我需要研究一种更好的方法来整体处理这种情况。
所以我理解这个问题有点含糊,但我真正想知道的是给出数组以以下数据结构结束的最佳方式是什么:
{parts: {uniquePart: 12345, timeListed 2}}
我相信一旦我理解了如何遍历嵌套的对象数组并构建新对象,我就可以从那里开始。我目前使用 reduce 的尝试没有取得成果。
array.reduce(acc,obj){return This is where I am a little lost}
此解决方案的特点是 Array.prototype.forEach
, Object.keys
and Array.prototype.map
临时对象 count
和 returns 想要的数组,每个部分都有一个对象。
function getCount(array) {
var count = {};
array.forEach(function (a) {
count[a.parts] = (count[a.parts] || 0) + 1;
});
return Object.keys(count).map(function (k) {
return { parts: { uniquePart: k, timesListed: count[k] } };
});
}
var array = [{ parts: 12345, purchased: "yes", customerId: 12541 }, { parts: 12432, purchased: "no", customerId: 55514 }, { parts: 12345, purchased: "Yes", customerId: 44421 }];
document.write('<pre>' + JSON.stringify(getCount(array), 0, 4) + '</pre>');
我有一个问题,我已经查看了这里的一些简化问题,但我似乎无法想出办法解决这个问题。我有一组对象。每个对象都有相同的属性,大约有 30 个。每个属性都有完全不同类型的信息。我希望能够轻松地创建一个新的 object/array。我的例子如下。
var array = [{parts: 12345, purchased: "yes", customerId: 12541},
{parts: 12432, purchased: "no", customerId: 55514},
{parts: 12345, purchased: "Yes", customerId: 44421}];
我想做的是根据数组中的信息类型找到一种提取有用数据的方法。例如:
some_function(array) {
...
return { parts: {uniquePart: 12345, timesListed: 2}};
}
}
我可能还想扩展返回的对象并计算购买次数是或否。我尝试了多种方法,但我认为这更像是一个数据模型问题,而不是编程问题。
我正在从收据字符串中解析这些数据。解析完纯文本字符串后,我会为每笔交易获得一个 30 属性 的大对象。一些属性也是嵌套对象或数组。
我想关联多个事务中的数据。也许我需要研究一种更好的方法来整体处理这种情况。
所以我理解这个问题有点含糊,但我真正想知道的是给出数组以以下数据结构结束的最佳方式是什么:
{parts: {uniquePart: 12345, timeListed 2}}
我相信一旦我理解了如何遍历嵌套的对象数组并构建新对象,我就可以从那里开始。我目前使用 reduce 的尝试没有取得成果。
array.reduce(acc,obj){return This is where I am a little lost}
此解决方案的特点是 Array.prototype.forEach
, Object.keys
and Array.prototype.map
临时对象 count
和 returns 想要的数组,每个部分都有一个对象。
function getCount(array) {
var count = {};
array.forEach(function (a) {
count[a.parts] = (count[a.parts] || 0) + 1;
});
return Object.keys(count).map(function (k) {
return { parts: { uniquePart: k, timesListed: count[k] } };
});
}
var array = [{ parts: 12345, purchased: "yes", customerId: 12541 }, { parts: 12432, purchased: "no", customerId: 55514 }, { parts: 12345, purchased: "Yes", customerId: 44421 }];
document.write('<pre>' + JSON.stringify(getCount(array), 0, 4) + '</pre>');