Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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 如何将数组中的一个元素与其他元素进行比较,并在JavaSript中创建一个新组_Javascript_Arrays_Sorting_Hash_Grouping - Fatal编程技术网

Javascript 如何将数组中的一个元素与其他元素进行比较,并在JavaSript中创建一个新组

Javascript 如何将数组中的一个元素与其他元素进行比较,并在JavaSript中创建一个新组,javascript,arrays,sorting,hash,grouping,Javascript,Arrays,Sorting,Hash,Grouping,我有以下Java脚本数组: let mainGroup = [ ] mainGroup[0] = {name: "HARRY", speed: 9} mainGroup[1] = {name: "GEORGE", speed: 8} mainGroup[2] = {name: "FAIZAN", speed: 8.5} mainGroup[3] = {name: "EMIL", speed: 6} mainGroup

我有以下Java脚本数组:

let mainGroup = [ ]
mainGroup[0] = {name: "HARRY", speed: 9}
mainGroup[1] = {name: "GEORGE", speed: 8}
mainGroup[2] = {name: "FAIZAN", speed: 8.5}
mainGroup[3] = {name: "EMIL", speed: 6}
mainGroup[4] = {name: "CHARLIE", speed: 5.5}
mainGroup[5] = {name: "BOB", speed: 5}
mainGroup[6] = {name: "ALEX", speed: 3.75}
(7) [{…},{…},{…},{…},{…},{…},{…},{…}]

我想将数组的第一个元素与其他每个元素进行比较,并创建一个新组,如下所示: 新集团 {“哈利”:9,“乔治”:8,“法赞”:8.5}

考虑到速度值,我必须创建一个新组。新组中的所有人必须彼此保持1分钟/公里的距离

这是我的密码

let newGroup  = {}
newGroup[mainGroup[0].name] = mainGroup[0].speed;
    for (i = 0; i < mainGroup.length; i++) {    
    let difference = mainGroup[0].speed - mainGroup[i++].speed;
        if (difference <= 1) {
        newGroup[mainGroup[i++].name] = mainGroup[i++].speed;
        };
    };
let newGroup={}
新组[mainGroup[0]。名称]=mainGroup[0]。速度;
对于(i=0;i
如果我理解正确,你想要这样的东西:

let main组=[
{名字:“哈利”,速度:9},
{姓名:“乔治”,速度:8},
{名称:“法赞”,速度:8.5},
{姓名:“埃米尔”,速度:6},
{姓名:“查理”,速度:5.5},
{姓名:“鲍勃”,速度:5},
{姓名:“亚历克斯”,速度:3.75}
];
const newGroups={};
mainGroup.forEach((组,i)=>{
mainGroup.forEach(比较=>{
const comparison=group.speed-compare.speed;
if(comparison=-1){
新组[`group-${i}`]={
…新组[`group-${i}`],
[compare.name]:compare.speed
};
}
});
});

log(newGroups);
对于已排序的数组,可以使用value和preducer检查新组

const
数据=[{name:“哈里”,speed:9},{name:“乔治”,speed:8},{name:“法赞”,speed:8.5},{name:“埃米尔”,speed:6},{name:“查理”,speed:5.5},{name:“鲍勃”,speed:5},{name:“亚历克斯”,speed:3.75}],
groups=data.reduce((r,{name,speed},i,a)=>{

如果(i&&a[i-1].speed-speed的增量运算符存在一些问题,这就可以完成这项工作

const main组=[
{名字:“哈利”,速度:9},
{姓名:“乔治”,速度:8},
{名称:“法赞”,速度:8.5},
{姓名:“埃米尔”,速度:6},
{姓名:“查理”,速度:5.5},
{姓名:“鲍勃”,速度:5},
{姓名:“亚历克斯”,速度:3.75}
];
const newGroup=group=>group.reduce((acum、elem、index)=>{
如果(索引===0&&elem)acum[elem.name]=elem.speed;
else if(Math.min(…Object.values(acum))-elem.speed{
期望(新集团(主要集团)).toEqual({哈利:9,乔治:8,法赞:8.5});

})
您希望有多少组?Joe,您的代码有一个错误。请看这里:{“消息”:“未捕获引用错误:未定义测试”,“文件名”:“,“行号”:29,“科尔诺”:1}Ye我已经为测试安装了jest,只是删除了测试函数它部分工作,因为同一个组重复了多次而不是一次。请查看代码的结果:{group-0:{…},group-1:{…},group-2:{…},group-3:{…},group-4:{…},}group-0:{HARRY:9,GEORGE:8,FAIZAN:8.5}group-1:{HARRY:9,GEORGE:8,FAIZAN:8.5}第二组:{HARRY:9,GEORGE:8,FAIZAN:8.5}第三组:{EMIL:6,CHARLIE:5.5,BOB:5}第四组:{EMIL:6,CHARLIE:5.5,BOB:5}第五组:{EMIL:6,CHARLIE:5.5,BOB:5}第六组:{6组:{ALEX:3.75}是的,但你期望的完整输出是什么,只是{9,GEORGE:8,HARRY:5}`???因为据我所知,您希望将每个项目与其他项目进行比较,因此这将是输出…或者您希望仅比较第一个项目?因为此解决方案适用于每个项目,如果只需要比较第一个项目会更容易,您能指定多一点吗