javascript - 如何将键值对映射到对象中的每个索引

标签 javascript arrays object

我正在尝试使用 map 向我的对象添加新的键和值对。该值只是一个空数组,以便我稍后可以将对象插入其中。

这是我的代码:

let columns = [
    {
        _id: "5e8af4591c9d440000a1a4ed",
        column_name: "Opportunities",
        column_value: 0,
        column_percentage: 0.25
    },
    {
        _id: "5e8af4a81c9d440000a1a4ee",
        column_name: "Prospects",
        column_value: 0,
        column_percentage: 0.5
    }
];

let output = columns.map(() => ({posts: []}));

console.log(output)

这是我希望我的对象在映射后看起来像这样:

let columns = [
    {
        _id: "5e8af4591c9d440000a1a4ed",
        column_name: "Opportunities",
        column_value: 0,
        column_percentage: 0.25,
        posts: []
    },
    {
        _id: "5e8af4a81c9d440000a1a4ee",
        column_name: "Prospects",
        column_value: 0,
        column_percentage: 0.5,
        posts: []
    }
];

但是当前的输出是:

[
    {
        posts: []
    },
    {
        posts: []
    }
]

最佳答案

您的代码不起作用,因为新数组将准确包含映射器函数返回的内容。

即使它与原始数组的内容无关,它也会保持其返回值不变。

因此,如果您返回一个对象 {posts:[]},它将是输出。

您必须将该对象合并到映射器函数内的当前数组元素中。

<小时/>

您可以使用对象扩展语法来合并两个对象:

let columns = [
    {
        _id: "5e8af4591c9d440000a1a4ed",
        column_name: "Opportunities",
        column_value: 0,
        column_percentage: 0.25
    },
    {
        _id: "5e8af4a81c9d440000a1a4ee",
        column_name: "Prospects",
        column_value: 0,
        column_percentage: 0.5
    }
];

columns.map(obj => ({...obj, posts: []}));

但是,这是一个相对较新的功能,因此,如果您需要更多支持,可以使用 Object.assign:

let columns = [
    {
        _id: "5e8af4591c9d440000a1a4ed",
        column_name: "Opportunities",
        column_value: 0,
        column_percentage: 0.25
    },
    {
        _id: "5e8af4a81c9d440000a1a4ee",
        column_name: "Prospects",
        column_value: 0,
        column_percentage: 0.5
    }
];

columns.map(obj => Object.assign({posts: []}, obj));

关于javascript - 如何将键值对映射到对象中的每个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61058795/

相关文章:

javascript - 有人可以在这里向我解释一下 'each' 方法吗?

JavaScript 遍历数组以检查数值

JavaScript:删除对象内的数组元素

python - 如何将一个类的功能分离到多个文件中?

javascript - 如何添加两个javascript对象

Javascript .toLocaleString() 返回错误的月份?

javascript - 使用JS将图像的特定背景颜色设置为透明

javascript - 将已选中复选框的表行提取到对象数组中

javascript - django 如何处理大文件(图像)上传 > 400MB

javascript - 如何从对象数组中的对象数组中搜索值?