俺要讲话
2020-12-09 15:48
采纳率: 66.7%
浏览 209
已采纳

js处理后台返回数据,把相同数据的值放到数组中?

 我想把相同type的value值放到一个数组中去,请问有什么好的方法么,求帮助~

 

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

10条回答 默认 最新

  • 我胖虎不答应!! 2020-12-09 17:15
    已采纳

    let arr = []
    for(let i = 0 ,l = data.length; i++){
        if(i === 0){
            arr.push([data[i]])
        }else{
            let flag = false
            try{
                arr.forEach(item=>{
                    if(item[0].type === data[i].type){
                        item.push(data[i])
                        flag = true
                        throw ''
                    }
                })
            }.catch(e){}
            if(!flag){
                arr.push([data[i]])
            }
        }
    }
    //data 就是你的数据
    // arr 最后得到的是一个个分类好的数组  二维数组 不知道你想要哪种

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • HH55HH55HH 2020-12-09 16:25

    let data = [];

    data.push():

    评论
    解决 无用
    打赏 举报
  • 我胖虎不答应!! 2020-12-09 17:15
    let arr = []
    for(let i = 0 ,l = data.length;i<l;i++){
        if(i === 0){
            arr.push([data[i]])
        }else{
            let flag = false
            try{
                arr.forEach(item=>{
                    if(item[0].type === data[i].type){
                        item.push(data[i])
                        flag = true
                        throw ''
                    }
                })
            }.catch(e){}
            if(!flag){
                arr.push([data[i]])
            }
        }
    }
    //data 就是你的数据
    // arr 最后得到的是一个个分类好的数组  二维数组 不知道你想要哪种
    评论
    解决 无用
    打赏 举报
  • Yirujet 2020-12-09 17:40

    const formatList = arr => arr.reduce((c, n) => {
        if (c.some(e => e.type === n.type)) {
            let i = c.findIndex(e => e.type === n.type)
            c[i].value.push(n.value)
            c[i].cmd.push(n.cmd)
        } else {
            c.push({
                ...n,
                cmd: [n.cmd],
                value: [n.value]
            })
        }
        return c
    }, [])

    评论
    解决 无用
    打赏 举报
  • _老杨_ 2020-12-09 17:54
     let data = [
                { type: "IN_AAA", cmd: 0, value: "IN1" },
                { type: "IN_AAA", cmd: 1, value: "IN2" },
                { type: "OUT_AAA", cmd: 2, value: "OUT1" },
                { type: "OUT_AAA", cmd: 3, value: "OUT2" }];
            let result = {};
            data.forEach(d => {
                if (!result[d.type]) result[d.type] = [];
                result[d.type].push(d.value);
            })
            console.log(result);

     

    评论
    解决 无用
    打赏 举报
  • 俺要讲话 2020-12-09 18:04

    我的data数据是动态的,一条条的,怎么整合成到一个data[i]里面去呢

    评论
    解决 无用
    打赏 举报
  • 我胖虎不答应!! 2020-12-09 18:35

    把所有获取的数据放在一个数组里就行了

    评论
    解决 无用
    打赏 举报
  • 我胖虎不答应!! 2020-12-09 18:36

    信徒的方法挺不错的,看你想要哪一种结果

    评论
    解决 无用
    打赏 举报
  • 俺要讲话 2020-12-10 10:11

    他的方法也可以,但是这个我不知道怎么分这个积分,所以只能给你先发出来的了。。很抱歉

    评论
    解决 无用
    打赏 举报
  • 我胖虎不答应!! 2020-12-10 11:26

    哈哈哈 他慢了

     

    评论
    解决 无用
    打赏 举报