动态Javascipt数组操作

如何解决动态Javascipt数组操作

假设我有示例输入数据,

data = [
  { name : 'Alice',age : 21},{ name : 'Henry',age : 20 },{ name : 'Max',{ name : 'Jane',age : 21}
]

我想以某种方式合并它们并将这些数据转换为以下形式,

result = [
  { age : 20,name : ['Henry','Max'] },{ age : 21,name : ['Alice','Jane'] } 
]

我不想用键或值的特定名称解决此问题。我想动态处理。谢谢!

解决方法

您可以尝试我的代码:

let data = [
  { name : 'Alice',age : 21},{ name : 'Henry',age : 20 },{ name : 'Max',{ name : 'Jane',age : 21}
]
let r = []
data.map(d => {
  b = r.find(a => a.age === d.age )
  if (b) b.name.push(d.name)
  else r.push({age: d.age,name: [d.name]})
})

console.log(r)
,

这是一个简单的示例,显示了迭代/映射/操作的类型,您可以根据需要将任意数据集转换为分组:

https://jsfiddle.net/6b2rp4n7/

const data = [
  { name : 'Alice',age : 21}
];

const mapping = new Map();

for (var i = 0; i < data.length; i++) {
    const element = data[i];
  for (const prop in element) {
    const key = prop + "" + element[prop];
    if (mapping.get(key) != null && mapping.get(key).val === element[prop]) {
        const matches = mapping.get(key);
      matches.list.push(element);
    } else {
        const matches = {val: element[prop],key: prop,list: [element]};
      mapping.set(key,matches);
    }
  }
}

let result = [];
mapping.forEach((val,key) => {
    if (val.list.length > 1) {
    let res = { matches: val.list };
    res[val.key] = val.val;
    result.push(res);
  }
});

console.log(result);

输出:

0:
age: 21
matches: Array(2)
0: {name: "Alice",age: 21}
1: {name: "Jane",age: 21}
1:
age: 20
matches: Array(2)
0: {name: "Henry",age: 20}
1: {name: "Max",age: 20}

我决定排除单个元素的所有分组,尽管它们也可能是有效的。我还把值操作留给了您-这里应该有足够的内容来建立您想要的数据结构。如果没有其他有关您要实现的目标及其原因的上下文,很难提供更多帮助。祝你好运!

,

让我们动手做这把戏。这不是路线图的直接解决方案,但是一旦获得路线图,您就可以根据自己的需要将其缩小为一个功能。

    data = [
  { name : 'Alice',age : 21}
]

现在我们需要通过循环搜索并将其减少到给定的唯一年龄值集 我们声明要使用的一组变量

var a = [];
var c= [];
var i;
var ii;

var iii; var iv;
现在让我们遍历整个爵士乐;

for (i = 0; i < data.length; i++) {

  a.push(data[i].age)
 
}
 a=[...new Set(a)];

这为我们提供了年龄作为数据数组中数组的唯一值。问题一排序。现在,我们从新生成的唯一数组创建占位符数组

for (ii = 0; ii < a.length; ii++) {

  c.push({'age':a[ii],'name':[]})
} 

现在我们已经根据唯一数组设置了占位符,我们只需从中进行搜索和匹配即可 数据数组和填充名称数组的占位符数组。

for (iii = 0; iii < c.length; iii++) {
for (iv = 0; iv < data.length; iv++) {
if(data[iv].age == c[iii].age){c[iii].name.push(data[iv].name)}
}
}

真的很简单。您可以进行一些功能使其整洁,但这是解决此问题的最简单的路线图。

 data = [
          { name : 'Alice',age : 21}
        ]

        var a = [];
        var c= [];


        var i;
        var ii;
var iii;
var iv;
        for (i = 0; i < data.length; i++) {

          a.push(data[i].age);

        }
          a=[...new Set(a)];
        for (ii = 0; ii < a.length; ii++) {

          c.push({'age':a[ii],'name':[]});
        }


        for (iii = 0; iii < c.length; iii++) {
        for (iv = 0; iv < data.length; iv++) {
        if(data[iv].age == c[iii].age){c[iii].name.push(data[iv].name);}
        }
        }

        console.log(c);

请注意,这正是我所遇到的日常数据处理问题,因此我将函数合并到了JS框架中,该框架根据我们所拥有的值搜索,比较和填充数组。来源在这里。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?