You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JavaScript数组转为含指定属性名的JSON对象列表?

解决数组转自定义属性对象列表的问题

嘿,这个场景太常见啦!你之前用Object.assign()没得到想要的结果,是因为它的作用是合并对象属性,而数组在JS里是类对象结构,索引就是它的属性名,所以才会得到把索引当键的单个对象。要实现你要的效果,用数组的map()方法就完美解决,还能轻松动态指定自定义属性名~

基础实现(固定属性名)

直接遍历数组的每个元素,把它包装成带redirectUri属性的对象:

const urlArray = ['https://www.google.com', 'https://www.facebook.com'];
const redirectList = urlArray.map(url => ({ redirectUri: url }));

console.log(redirectList);
// 输出:[{"redirectUri": "https://www.google.com"}, {"redirectUri": "https://www.facebook.com"}]

动态指定属性名

如果你的属性名不是固定的,想根据变量来设置,用ES6的计算属性名就可以实现:

const urlArray = ['https://www.google.com', 'https://www.facebook.com'];
const customPropertyName = 'redirectUri'; // 这里可以替换成任何你需要的属性名

const redirectList = urlArray.map(url => ({
  [customPropertyName]: url
}));

console.log(redirectList);
// 输出和上面完全一致,属性名由customPropertyName变量决定

这里的[customPropertyName]会把变量的值当作对象的属性名,完美满足动态指定的需求。

为什么Object.assign不行?

再补充下你之前的误区:Object.assign({}, array)是把数组这个类对象的所有属性(也就是数组的索引0、1...)都复制到空对象里,所以得到的是{"0": "xxx", "1": "xxx"}这种结构,和你要的对象列表完全不是一回事~

内容的提问来源于stack exchange,提问作者DrollDread

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:48:27