我有一个数组,我想根据键(K1等键(值(A,AA等值(拆分为多个数组。我的例子:
array = [{"K1":"A","K2":"B","k3":"AA"},{"K1":"A","K2":"B","k3":"BB"},{"K1":"A","K2":"B","k3":"BB"},{"K1":"A","K2":"B","k3":"CC"}]
应返回其中值 AA、BB、CC 是分离的变量/值。该数组是动态的,因此 ik 也可以具有例如 DD、EE 等
array 1= [{"K1":"A","K2":"B","k3":"AA"}]
array 2= [{"K1":"A","K2":"B","k3":"BB"},{"K1":"A","K2":"B","k3":"BB"}]
array 3= [{"K1":"A","K2":"B","k3":"CC"}]
我如何实现这一点
假设键在所有数组元素上的顺序相同,您可以使用reduce
创建一个对象。使用 Object.values
将对象转换为数组
var array = [{"K1":"A","K2":"B","k3":"AA"},{"K1":"A","K2":"B","k3":"BB"},{"K1":"A","K2":"B","k3":"BB"},{"K1":"A","K2":"B","k3":"CC"}];
[array1,array2,array3] = Object.values(array.reduce((c,v)=>{
let k = Object.values(v).join("_"); //Using the values as key.
c[ k ] = c[ k ] || [];
c[ k ].push( v );
return c;
},{}))
console.log( "array1", array1 );
console.log( "array2", array2 );
console.log( "array3", array3 );
仍然很难破译你实际上试图基于什么进行拆分,但这里有一些通用代码来帮助你编写/尝试东西。您可以尝试遍历数组并根据正常逻辑将对象推送到新的拆分数组,如下所示
// initial array
const array = [{"K1":"A","K2":"B","k3":"AA"},{"K1":"A","K2":"B","k3":"BB"},{"K1":"A","K2":"B","k3":"BB"},{"K1":"A","K2":"B","k3":"CC"}];
// split arrays
const array1 = [];
const array2 = [];
const array3 = [];
array.forEach(obj => {
// if statements or switch statement depending on how you want to split
switch(obj.k3) {
case 'AA':
array1.push(obj);
break;
case 'BB':
array2.push(obj);
break;
case 'CC':
default:
array3.push(obj);
break;
}
});