我要创建一个新的对象数组。(键为颜色)
const result = [ {red: [{height: 50}, {height: 10}]}, {green: [{height: 20}, {height: 60}]}, {blue: [{height: 30}, {height: 40}]} ]我尝试使用listash.groupBy,但是我根本不知道如何解决此问题。
推荐答案使用数组Reduce可以迭代数据并计算结果对象。
const array = [ { 'red': [ { height: 50 } ] }, { 'green': [ { height: 20 } ] }, { 'blue': [ { height: 30 } ] }, { 'blue': [ { height: 40 } ] }, { 'red': [ { height: 10 } ] }, { 'green': [ { height: 60 } ] } ]; const res = array.reduce((acc, element) => { // Extract key and height value array const [key, heightValue] = Object.entries(element)[0]; // Get or create if non-exist, and push height value from array, index 0 (acc[key] || (acc[key] = [])).push(heightValue[0]); return acc; }, {}); console.log(res);