javascript—获取对象数组的内容,并将其分配给json对象上的属性

ljsrvy3e  于 2021-09-23  发布在  Java
关注(0)|答案(4)|浏览(226)

我想从此数组中获取项目(在客户端保存项目的方式)

[
    {
        "id": "-Mdawqllf_-BaW63gMMM",
        "text": "Finish the backend[1]",
        "status": true,
        "time": 1625248047800
    },
    {
        "id": "-Mdawqllf_-BaW63gGHf",
        "text": "Finish the middle-end[2]",
        "status": false,
        "time": 1625248040000
    },
    {
        "id": "-Mdawqllf_-BaW63gGHd",
        "text": "Finish the front-end[3]",
        "status": false,
        "time": 1625248040000
    }
]

并将它们转换成这种格式,以便在服务器端保存

{    "todos": {
            "-Mdawqllf_-BaW63gMMM": {
                "text": "Finish the backend[1]",
                "status": true,
                "time": 1625248047800,

            },
            "-Mdawqllf_-BaW63gGHf": {
                "text": "Finish the middle-end[2]",
                "status": false,
                "time": 1625248040000,

            },
            "-Mdawqllf_-BaW63gGHd": {
                "text": "Finish the front-end[3]",
                "status": false,
                "time": 1625248040000,

            }
        },
}

基本上,我在客户机上将项目转换为一个数组,以帮助排序和使用数组。但在发回之前,我们需要把它转换成正确的格式

hzbexzde

hzbexzde1#

使用 .map() 在对象数组上循环以退出 id 属性,因此可以将其用作新对象的键。
使用 Object.fromEntries() 从返回的数组创建新对象的步骤 .map() .

const data = [
    {
        "id": "-Mdawqllf_-BaW63gMMM",
        "text": "Finish the backend[1]",
        "status": true,
        "time": 1625248047800
    },
    {
        "id": "-Mdawqllf_-BaW63gGHf",
        "text": "Finish the middle-end[2]",
        "status": false,
        "time": 1625248040000
    },
    {
        "id": "-Mdawqllf_-BaW63gGHd",
        "text": "Finish the front-end[3]",
        "status": false,
        "time": 1625248040000
    }
];

const todos = {
  Todos: Object.fromEntries(data.map(obj => [obj.id, obj]))
};

console.log(todos);
bnl4lu3b

bnl4lu3b2#

如果只有一个对象在 data 数组,您只需将它们移动到 todos json通过变量赋值,如下所示

const todos = {
        "Todos" : data[0]
}

记住在双引号中添加键,使其成为json。

qjp7pelc

qjp7pelc3#

@巴尔马的解决方案很好。
为了学习或其他人的谷歌搜索。还可以将数组缩减为对象。

const todos = data.reduce((obj, item) => {
  obj[item.id] = item
  return obj
}, {})
bhmjp9jg

bhmjp9jg4#

const items = {
      todos: {
           ...data
      }
 };

假设数据是对象数组。使用spread操作符将所有数组对象从数据数组复制到todos键处的todos对象。
需要注意的一点是,在没有数组的情况下,不能将多个对象分配给单个对象键。您必须使用数组来维护一个键下的所有对象。
避免使用硬代码索引。始终使用扩展运算符

相关问题