【问题标题】:Break array in multiple arrays based on key value javascript基于键值javascript在多个数组中打破数组
【发布时间】:2018-03-15 15:05:53
【问题描述】:

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

我如何实现这一目标

【问题讨论】:

  • 请向我们展示您已经尝试过的内容。
  • 同样,您所说的“键值”不是很清楚。
  • @AaronChristiansen 我很乐意,但我是 javascript 新手,我一直在研究 split 函数,但其​​中不包含键值
  • @JLivengood 编辑了我的问题
  • 我的猜测是您正在寻找groupBy 函数,例如lodash.com/docs#groupBy。但是你的问题实在是太不清楚了。

标签: javascript arrays filter split


【解决方案1】:

假设键在所有数组元素上的顺序相同,您可以使用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 );

【讨论】:

    【解决方案2】:

    仍然难以破译您实际尝试拆分的依据,但这里有一些通用代码可以帮助您编写/尝试内容。您可以尝试循环遍历数组并将对象推送到基于正常逻辑的新拆分数组,如下所示

    // 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;
      }
    });
    

    【讨论】:

    • @J Livengood 这似乎是一个解决方案,可以根据数组的可变长度使其动态化吗?附言。我编辑了我的问题,试图让它更清楚,对不起,我是个菜鸟
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2021-11-03
    • 1970-01-01
    • 2021-12-01
    • 2014-11-16
    • 2013-04-06
    相关资源
    最近更新 更多