javascript - 规则对象如何转数组?
迷茫
迷茫 2017-04-11 13:05:21
[JavaScript讨论组]

form

{
    a1: 'a1',
    b1: 'b1',
    c1: 'c1',
    d1: 'd1',
    a2: 'a2',
    b2: 'b2',
    c3: 'c3'
}

to

[
    ['a1', 'b1', 'c1', 'd1'],
    ['a2', 'b2'],
    ['c3']
]

js怎么实现?
其实想要的就是把key后面的数字相同的项目的值提取出来放进一个数组,再把数组放进一个大数组里。
例如a1b1,key的数字部分均为1,则提取a1b1的值分别为a1b1,放进一个数组中,再把这个数组放进一个大数组,后面项目类推,最后得到一个两层嵌套数组。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
ringa_lee

只针对你题目

obj={
    a1: 'a1',
    b1: 'b1',
    c1: 'c1',
    d1: 'd1',
    a2: 'a2',
    b2: 'b2',
    c3: 'c3'
}
arr=[];
for (var c in obj){
    if(!arr[c[1]]){arr[c[1]]=[];}
    arr[c[1]].push(obj[c]);
}
console.log(arr);
PHP中文网

其实你的问题问得不清楚,数据也很特殊,真的不知道你要写什么逻辑。
如果只实现一个单一逻辑,那很简单:

function o2arr(obj, n) { //obj:要转换的对象,n:对象里数字对应 ,这儿很有局限,只针对你题目
    var result = [];
    for(var j = 1; j <= n; j++) {
        var arr = [];
        for(var i in obj) { 
            if(i.indexOf(j) != -1) {arr.push(obj[i])}
        }    
        result.push(arr);
    }
    return result;
}
o2arr(o,3)  //o为你题中的对象,打印出结果就可以实现你提问的数组了

但是要通用的话,这样还差很多,需要知道你要啥子逻辑,而不是单一的给个代码转换。

巴扎黑

那就遍历对象属性,规矩你的规则(你这里应该就是按照数字来分组了)处理。

迷茫
  var obj = {
    b4: 'b4',
    a1: 'a1',
    b1: 'b1',
    c1: 'c1',
    d1: 'd1',
    a2: 'a2',
    b2: 'b2',
    c3: 'c3',
    e1: 'e1',
    d2: 'd2',
    h3: 'h3',
    h4: 'h4',
    h1: 'h1'
}

var temp;
var index = 1;
var hash = {};
var result = Object.keys(obj).reduce(function(res, next) {
    temp ? '' : (temp = next.match(/\d+/)[0], hash['temp' + temp] = index);
    var matchNum = next.match(/\d+/)[0];
    if (temp !== matchNum) {
        hash['temp' + matchNum] ? '' : hash['temp' + matchNum] = ++index;
        temp = matchNum;
    }
    res[hash['temp' + matchNum] - 1] ? res[hash['temp' + matchNum] - 1].push(obj[next]) : res.push([obj[next]]);
    return res
}, [])
console.log(JSON.stringify(result))
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号