如何动态创建对象键并为其分配属性

如何解决如何动态创建对象键并为其分配属性

我有一个对象数组,我想检查某个对象是否具有数组作为属性,因此,如果要这样做,我想创建具有分配给这些键的属性的新动态键。这是我拥有的数组:

const arr = [
    {
        customer_name: 'Negan',customer_age: 45,customer_weapon: 'Bat',customer_email: 'negan@sanctuary.com',customer_city: 'Washington'
    },{
        customer_name: 'Daryl',customer_age: 41,customer_weapon: 'Crossbow',customer_email: ['daryl.dixon@kickass.com','bla@bla.com','fla@fla.com'],customer_city: 'Atlanta'
    },{
        customer_name: 'Rick',customer_weapon: 'Magnum 357',customer_email: 'rick@alexandria.com',customer_city: 'King County'
    },]

并且我想将customer_email重新分配给新属性,所以输出将是

[{email1: 'daryl.dixon@kickass.com',email2: 'bla@bla.com',email3: 'fla@fla.com'}]

还保留其余的对象属性。我已经尝试过这样的事情

const arr1 = arr.map((item,index) => {
    const emails = item.customer_email.toString().split(",");

    let list = [];
    for (var i = 0; i < arr.length; i++) {
        var item = {};
        item['emails' + i] = emails[i];
        list.push(item);
    }

    console.log('list',list);

    return {
        email1: emails.shift(),email2: emails.shift(),email3: emails.shift()
    }
})

但是效果不佳。我究竟做错了什么?预先感谢!

解决方法

您正在创建一个新的项目对象并返回该对象,因此它不会保留旧的键。我已经修改了您的代码逻辑。

const arr1 = arr.map((item,index) => {

    if( Array.isArray(item.customer_email))
    {
        for (var i = 0; i < item.customer_email.length; i++) {
            item['emails' + i] = item.customer_email[i];
        }
    }
    return item
})

哪个会给你这个输出

[{
    "customer_name": "Negan","customer_age": 45,"customer_weapon": "Bat","customer_email": "negan@sanctuary.com","customer_city": "Washington"
},{
    "customer_name": "Daryl","customer_age": 41,"customer_weapon": "Crossbow","customer_email": ["daryl.dixon@kickass.com","bla@bla.com","fla@fla.com"],"customer_city": "Atlanta","emails0": "daryl.dixon@kickass.com","emails1": "bla@bla.com","emails2": "fla@fla.com"
},{

    "customer_name": "Rick","customer_weapon": "Magnum 357","customer_email": "rick@alexandria.com","customer_city": "King County"
}]

考虑到您仅在电子邮件具有emailId数组且还保留其他键值的情况下,才期望使用新密钥的emailID。

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

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?