Javascript JS中的数组键分组

Javascript JS中的数组键分组,javascript,Javascript,我有一个目标: { 'coinRow[0][txID]': 'btc', 'coinRow[0][amountSpent]': '0.33', 'coinRow[0][date]': '28/7/18', 'coinRow[1][txID]': 'btc', 'coinRow[1][amountSpent]': '0.23', 'coinRow[1][date]': '28/7/18' } 我想把它安排在一个对象中,这样每个索引都将分组在一起 [{ txID

我有一个目标:

{ 
  'coinRow[0][txID]': 'btc',
  'coinRow[0][amountSpent]': '0.33',
  'coinRow[0][date]': '28/7/18',
  'coinRow[1][txID]': 'btc',
  'coinRow[1][amountSpent]': '0.23',
  'coinRow[1][date]': '28/7/18' 
}
我想把它安排在一个对象中,这样每个索引都将分组在一起

[{
    txID: 'btc',
    amountSpent: 0.33,
    date: '28/7/18'
},{
    txID: 'ven',
    amountSpent: 0.23,
    date: '28/7/18'
}]

谢谢大家!

您可以使用
Object.entries
将对象转换为数组。使用
reduce
将数组汇总为对象。使用
Object.values
将对象转换为数组

var obj={
'coinRow[0][txID]':'btc',
“coinRow[0][AmountExplored]”:“0.33”,
“coinRow[0][date]”:“2018年7月28日”,
“coinRow[1][txID]”:“btc”,
“coinRow[1][AmountExplored]”:“0.23”,
“coinRow[1][date]”:“2018年7月28日”
};
var result=Object.values(Object.entries(obj).reduce((c[k,v])=>{
k=k.match(/\[(.*?\]]/g).map(o=>o.slice(1,-1));
c[k[0]]=c[k[0]]| |{};
c[k[0][k[1]]=v;
返回c;
}, {}));

控制台日志(结果)对于设置值,可以通过遍历给定对象来分割路径并减少关键点。如果不存在对象,请使用名称或数组创建新属性。稍后指定值

这种方法也适用于嵌套数组

函数设置值(对象、路径、值){
var keys=path.replace(/\[/g',')。replace(/\]/g',)。split('.'),
last=keys.pop();
减少((o,k,i,a)=>
o[k]=o[k]| |(是有限的(i+1在a?a[i+1]:last)?[]:{}),
对象
)[最后]=价值;
返回对象;
}
var数据={'coinRow[0][txID]':'btc','coinRow[0][Amountspend]:'0.33','coinRow[0][date]:'28/7/18','coinRow[1][txID]:'btc','coinRow[1][Amountspend]:'0.23','coinRow[1][date]:'28/7/18',
结果=对象
.条目(数据)
.reduce((o[k,v])=>setValue(o,k,v),{});
控制台日志(结果)

作为控制台包装{max height:100%!important;top:0;}
发布的问题似乎根本不包含解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试过的内容,以便说明您在某个问题中遇到的具体问题。有关更多信息,请参阅并获取。到目前为止您做了什么?我尝试使用数组reduce,例如:data=array.from(data.entries()).reduce((memo,pair)=>({…memo,[pair[0]]]:pair[1]}),{}),但密钥位于[pair[0]]作为一个字符串,所以它不会把它看作一个数组谢谢!这对我帮助很大