-
人到中年有点甜
“......我想要特定类型值的所有最大值和最小值,而不是绝对最大值和绝对最小值。有什么办法可以包括这个吗?”可能最自然/最明显的方法是首先filter提供匹配的任何列表项type......data2.list.filter(item => item.type === typeToCheckFor)...并在第二步中map过滤数组的任何项目....map(item => { min: item.min, max: item.max });另一种方法是reduce在一个迭代周期内得到结果......var data2 = { "name" : "history", "list": [{ "type" : "a", "max" : 52.346377, "min" : 0.1354055, "date": "17-01-01", "time": "21:38:17" }, { "type" : "b", "max" : 55.3467377, "min" : 0.1154055, "date": "17-01-01", "time": "22:38:17" }, { "type" : "b", "max" : 48.3467377, "min" : -0.1354055, "date": "17-01-01", "time": "23:38:17" }]}function collectMinMaxValuesOfMatchingType(collector, item) { if (item.type === collector.type) { collector.list.push({ //type: item.type, min: item.min, max: item.max }) } return collector;}console.log( data2.list.reduce(collectMinMaxValuesOfMatchingType, { type: 'b', list: [] }).list);console.log( data2.list.reduce(collectMinMaxValuesOfMatchingType, { type: 'a', list: [] }).list);console.log( data2.list.reduce(collectMinMaxValuesOfMatchingType, { type: 'foo', list: [] }).list);.as-console-wrapper { min-height: 100%!important; top: 0; }
-
慕妹3146593
在 data.list 上使用过滤器将只传递那些类型与搜索值相同的对象。然后使用 map 创建具有最小/最大值的新对象。function filterArray(array, value) { let result = array.list.filter( obj => obj.type===value).map( filtered => { return {max: filtered.max, min: filtered.min} }); return result;}var data2 = { "name" : "history", "list": [ { "type" : "a", "max" : 52.346377, "min" : 0.1354055, "date": "17-01-01", "time": "21:38:17" }, { "type" : "b", "max" : 55.3467377, "min" : 0.1154055, "date": "17-01-01", "time": "22:38:17" }, { "type" : "b", "max" : 48.3467377, "min" : -0.1354055, "date": "17-01-01", "time": "23:38:17" } ]}console.log(filterArray(data2,'b'));console.log(filterArray(data2,'a'));console.log(filterArray(data2,'any'));
-
慕丝7291255
例如,您可以使用一个简单的for ... of循环;let checkType = "a";let max, min;for (let entry of data2.list) { if (entry.type === checkType) { max = entry.max; min = entry.min; break; }}console.log(min, max);现在让我们注意这将在第一次出现正确的“类型”时停止(如果您有多个相同类型的条目);如果你想考虑相同“类型”的多个条目,你可以结合 afilter和map迭代,例如:let checkType = "b";let minMaxValues = data2.list .filter(e => e.type === checkType) .map(e => { min : e.min, max : e.max });console.log(minMaxValues);/*[{ min : 0.1154055, max : 55.3467377},{ min : -0.1354055, max : 48.3467377}] */