Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用键在数组数组中分割对象_Javascript_Arrays - Fatal编程技术网

Javascript 使用键在数组数组中分割对象

Javascript 使用键在数组数组中分割对象,javascript,arrays,Javascript,Arrays,考虑以下对象: { a1: "Foo", b1: "Boo" , c1: "Coo", a2: "Doo" , b2: "Goo", c2: "Soo", ....... c50: "Zoo" } 我想把它分成一组数组,如下所示: [["Foo","Boo","Coo"], ["Doo","Goo","Soo"]......[ .., ..,"Zoo"]] 这样做的最佳实践是什么?您可以使用获取键,对其进行迭代,使用获取数字部分,为索引减小它,然后推送值 var object={a1:“F

考虑以下对象:

{ a1: "Foo", b1: "Boo" , c1: "Coo", a2: "Doo" , b2: "Goo", c2: "Soo", ....... c50: "Zoo" }
我想把它分成一组数组,如下所示:

[["Foo","Boo","Coo"], ["Doo","Goo","Soo"]......[ .., ..,"Zoo"]]

这样做的最佳实践是什么?

您可以使用获取键,对其进行迭代,使用获取数字部分,为索引减小它,然后推送值

var object={a1:“Foo”,b1:“Boo”,c1:“Coo”,a2:“Doo”,b2:“Goo”,c2:“Soo”,c50:“Zoo”},
结果=[];
Object.keys(对象).forEach(函数(键){
var i=key.match(/\d+$/)-1;
结果[i]=结果[i]| |[];
结果[i]。推送(对象[key]);
});
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
尝试以下操作:

var obj = { a1: "Foo", b1: "Boo" , c1: "Coo", a2: "Doo" , b2:"Goo", c2:"Soo" };
var indexObj = { a: 0, b: 1, c: 2 };
var result = [];

for(var prop in obj) {
   var index = indexObj[prop[0]];
   var array = prop.match(/\d+$/) - 1;

   if(!result[array]) {
      result[array] = [];
   }

   result[array][index] = obj[prop];
}

console.log(JSON.stringify(result));
//[["Foo","Boo","Coo"],["Doo","Goo","Soo"]]

您可以首先使用
Object.keys()
上的
reduce()
返回一个对象,然后使用该对象的
map()
键返回值,这些值将是值的数组

var obj={a1:Foo,b1:Boo,c1:Coo,a2:Doo,b2:Goo,c2:Soo,c50:Zoo}
var o=Object.keys(obj).reduce(函数(r,e){
var newKey=e.match(/\d+/)[0]
r[newKey]=(r[newKey]| |[]).concat(obj[e])
返回r
}, {})
var result=Object.keys(o.map)(e=>o[e])

console.log(结果)
可能是您可以执行以下操作

var obj={a1:Foo,b1:Boo,c1:Coo,a2:Doo,b2:Goo,c2:Soo,a3:Hello,b3:to,c3:you,c50:Zoo},
res=对象键(obj)
.减少(功能(r,c){
var t=/\d+/.exec(c)[0];
r、 t=r.t!==t?(r.push([obj[c]]),t)
:(r[r.length-1].push(obj[c]),t);
返回r;
},[]);

控制台日志(res)您最近一次尝试完成此任务的距离有多近?您可以共享任何代码吗?使用
Object.keys()
收集键,然后循环它们,并根据给定键名的数字部分将值推送到单独的数组中。这不是JSON对象。这是一个JavaScript对象文本。这些术语是不能互换的。“考虑一下下面的json”-这里没有json,密钥需要用双引号括起来。@mkaatman我还没有足够的距离来共享代码。我不认为这会按预期工作,如果你切换
a1
b2
,结果将是
[“Boo”、“Foo”、“Coo”]
而不是第一个数组。@Arg0n,据我所知,这个数字显示了结果集的索引。如果您切换
a1
b2
,会得到不同的结果。在我的解释中,字母表示数组中的索引,数字表示数组的索引。我将数字视为索引指示器。