微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript使用带有变量项的映射在数组中迭代

如何解决javascript使用带有变量项的映射在数组中迭代

抱歉,如果重复了一些问题,但我搜索了很多但没有找到任何东西。 我必须在js中填写一张表格。为此,我采用对象数组(中心)的值并应用 map。 一切正常。

centers = [
        { 'center': 'Center 1','datos': { "key1":4.67,"key2":3.56
                    } 
        },{ 'center': 'Center 2','datos': { "key1":0.34,"key2":5} 
                    },{ 'center': 'Center 3','datos': { "key1":3.7,"key2":2.5} 
                    }
        ]

let result = centers.map(res => {
    let columns = {'column1':res.datos.key1,'column2':res.datos.key2}
    return columns;
})

/* result =  [
  [
    { column1: 4.67,column2: 3.56 },{ column1: 0.34,column2: 5 },{ column1: 3.7,column2: 2.5 }
  ]
]

*/

然而,项目“key1 ...... key1000”很多,我想在这样的地图函数中实现它们

var cc = ['key1','key2','key3','key4','key5'];

let result = centers.map(res => {
    let columns = {'column1':res.datos.cc[0],'column2':res.datos.cc[1],...........}
    return columns;
})

但它不取变量的值。 有可能映射这个吗?。谢谢。

解决方法

const centers = [{
  'center': 'Center 1','datos': {
    "key1": 4.67,"key2": 3.56
  }
},{
  'center': 'Center 2','datos': {
    "key1": 0.34,"key2": 5
  }
},{
  'center': 'Center 3','datos': {
    "key1": 3.7,"key2": 2.5
  }
}]

const result = centers.map(res => Object.entries(res.datos).reduce((acc,[key,value]) => ({ ...acc,[key.replace('key','column')]: value
}),{}))
console.log(result)

,

您需要使用 Object.keys(res) 来获取数组中的所有键 cc 然后首先在 for 循环中使用动态变量名称来命名列(从 (column1) 开始,并从 cc 中的 0 和名称 cc[0] => key1

中的 1 开始命名键)

let result = centers.map(res => {

    cc = Object.keys(res); // ['key1','key2','key3','key4','key5']
    let columns : {};

    for (let i = 0; i < cc.length; i++) {
       // for i = 0 =>  columns['column1'] = res.datos[key0]
       // for i = 0 =>  columns.columns1 = res.datos.key0
        columns['column' + (i + 1)] = res.datos[`${cc[i]}`] ;
    
    }

    return columns ;

}
,

我终于能够解决了。我发布以防万一它可以帮助

centers = [
        { 'center': 'Center 1','datos': { "key1":4.67,"key2":3.56
                    } 
        },{ 'center': 'Center 2','datos': { "key1":0.34,"key2":5} 
                    },{ 'center': 'Center 3','datos': { "key1":3.7,"key2":2.5} 
                    }
        ]


 var cc = ['key1','key2'];

for (let i = 0; i < cc.length; i++) {
        
centers.map(res => {
    let nombreColumna = "column"+i;
    let columns = {[nombreColumna]:res.datos[cc[i]]}
     arrayOut.push (columns);
    return arrayOut;
})
}

/*
arrayOut:

[
  [
    { column0: 4.67 },{ column0: 0.34 },{ column0: 3.7 },{ column1: 3.56 },{ column1: 5 },{ column1: 2.5 }
  ]
]

´´´

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