Javascript 如何对数组的元素进行分组

Javascript 如何对数组的元素进行分组,javascript,Javascript,我有一个数组: var arr = ['User1','123456','User2','456789','User3','546544']; 如何获得这样的对象数组: var arr2 = [{name: 'User1', id: 123456},{name: 'User2', id: 456789}, {name: 'User3', id: 546544}]; 我试过这个: arr.forEach(function (item, i, arr) { arr2.pu

我有一个数组:

var arr = ['User1','123456','User2','456789','User3','546544'];
如何获得这样的对象数组:

var arr2 = [{name: 'User1', id: 123456},{name: 'User2', id: 456789}, {name: 'User3', id: 546544}];
我试过这个:

arr.forEach(function (item, i, arr) {
            arr2.push(
                {
                    name: arr[i],
                    id: arr[i + 2]
                }
            );
        });

for循环可以在所有计算机的所有版本上工作,并具有能够直接跳过索引的附加优势,而forEach只能通过大量额外代码来完成这一点。而且forEach比for循环慢

var arr1=['User1','123456','User2','456789','User3','546544',arr2=[];
对于(vari=0;iconsole.log(arr2)
您的问题的解决方案如下:

var arr2 = [];

for (var i = 0; i < arr.length; i = i + 2) {
   arr2.push({name : arr[i], id: arr[i + 1]})
}
var arr2=[];
对于(变量i=0;i

下次尝试显示试用代码时,您将以这种方式取得更大的进步。

简单地说,您需要做两件事:

  • 检查长度是否均匀
  • 通过将循环增加两次,根据需要推送它
  • var arr=['User1','123456','User2','456789','User3','546544'];
    var arrObj=[];
    如果(arr.length%2==0)
    对于(变量i=0;iconsole.log(arrObj)查看代码中的注释

    const arr=['User1','123456','User2','456789','User3','546544'];
    //好的,那么您要做的是将信息分组并创建一个新对象
    //您可以使用很多函数,在下面的示例中,我将使用
    //Array.reduce
    //我们称之为夫妻,两个值结合在一起,比如:
    //用户1和123456
    //用户2和456789
    // ...
    const ret=arr.reduce((tmp,x,xi)=>{
    //对夫妇的第一个值不添加任何内容
    //我们要忽略,用户1,用户2和用户3
    如果(xi%2==0)返回tmp;
    返回[
    …tmp,
    //在数组中添加新值
    {
    //名称是该对的第一个值
    名称:arr[xi-1],,
    //id是该对的第二个值
    id:x,
    },
    ];
    }, []);
    
    控制台日志(ret)请访问,取查看和。做一些研究,搜索相关话题等;如果你被卡住了,发布你的尝试,注意输入和预期输出。看看地图和按钮-即使是一个简单的for循环也很有用。
    id:arr[i+1]
    Er。。。不捕获名称。哦,你用了完全不同的方式<代码>:)
    但是为什么不呢?也许应用程序需要这样一种格式<代码>:)
    @mplungjan第二次投票是我的。您不需要将对象键用双引号括起来,因为…:D@Gr这是我的风格。我喜欢包装它们,使它们类似于有效的JSON<代码>:)
    @Praveen Kumar Purushothaman我明白,我只是在戳mplungjan:pArrrgh。这太复杂了,不可能把ES6强加于无忧者身上,一个被广泛评论的答案看起来很棒。乍一看,它看起来像一个只有代码块的低质量答案。所以我编辑了这个。希望没问题?@mplungjan ROFL,是的。@mplungjan是的,因为缩进不好的代码,没有任何空格,对noobs来说更容易理解。这肯定会让他们养成好习惯。。。这并不是因为代码紧凑,而是因为better@mplungjan格雷格说你的一句话对新手很难。。。这在某种程度上是正确的<代码>:)谢谢,我没问题,不知道为什么人们会投反对票,这是解决您问题的简单有效的方法,不需要200行。