根据键值 javascript 在多个数组中中断数组



我有一个数组,我想根据键(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;
  }
});

最新更新