gpt4 book ai didi

javascript - 从单个 JavaScriptObject 到多个 JavaScriptObject

转载 作者:行者123 更新时间:2023-11-28 11:22:35 27 4
gpt4 key购买 nike

我有以下 javaScript 对象

var stats = [
{x: 10, y: 300, clr:'blue'},
{x: 16, y: 600, clr:'blue'},
{x: 26, y: 300, clr:'yellow'},
{x: 36, y: 200, clr:'yellow'},
{x: 46, y: 700, clr:'green'},
{x: 56, y: 100, clr:'green'},
];

我怎样才能获得以下对象?每个对象根据clr属性分离。主要关键点是将前一个对象的最后一个对象分离并附加到新对象的第一个对象。这一步需要连接它们之间的线。

 var stats1 = [
{x:10, y:300, clr:'blue'},
{x:16, y:600, clr:'blue'},
];

var stats2 = [
{x:16, y:600, clr:'yellow'},
{x:26, y:300, clr:'yellow'},
{x:36, y:200, clr:'yellow'}
];

var stats3 = [
{x:36, y:200, clr:'green'},
{x:46, y:700, clr:'green'},
{x:56, y:100, clr:'green'}
];

最佳答案

另一个解决方案,因为您希望最后一个对象成为下一个数组对象的第一个:

var stats = [
{x: 10, y: 300, clr:'blue'},
{x: 16, y: 600, clr:'blue'},
{x: 26, y: 300, clr:'yellow'},
{x: 36, y: 200, clr:'yellow'},
{x: 46, y: 700, clr:'green'},
{x: 56, y: 100, clr:'green'},
];

function groupBy( array ,prop, f )
{
var groups = {};

///grouping & sorting
array.forEach( function( o )
{
var group = JSON.stringify( f(o) );
groups[group] = groups[group] || [];
groups[group].push( o );
});

var last_prop = "" ;
var last_elm = {} ;

for(var key in groups )
{
if(last_prop !== "")
{

last_elm[prop] = groups[key][0][prop] ;
groups[key].unshift(last_elm);
}

last_prop = key;
last_elm = (JSON.parse(JSON.stringify(groups[key][groups[key].length - 1])));
}

return Object.keys(groups).map( function( group )
{
return groups[group];
});
}

var result = groupBy(stats, "clr", function(item)
{
return [item.clr];
});

console.log(result);
document.write(JSON.stringify(result));

如果不起作用,请尝试 jsbin 版本 http://jsbin.com/tudahibefo/1/

关于javascript - 从单个 JavaScriptObject 到多个 JavaScriptObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30179314/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com