Javascript 如何在纯js中创建具有字符串值的动态键的对象?

Javascript 如何在纯js中创建具有字符串值的动态键的对象?,javascript,Javascript,我试图创建一个对象,该对象使用动态键,键ID和值作为通过API获取的字符串的名称。 下面是我的API ["PHP", "Project Management", "PHP dynamic website", "Ecommerce", "Magento", "Magento Websites"] 我想将其转换为以下响应 [ { id: 0, name: "PHP" }, { id: 1, name: "Project Manage

我试图创建一个对象,该对象使用动态键,键ID和值作为通过API获取的字符串的名称。 下面是我的API

["PHP", "Project Management", "PHP dynamic website", "Ecommerce", "Magento", "Magento Websites"]
我想将其转换为以下响应

         [
            { id: 0, name: "PHP" },
            { id: 1, name: "Project Management" },
            { id: 2, name: "PHP dynamic website" },
            { id: 3, name: "Ecommerce" }
         ]

只需使用
forEach
循环,并使用迭代器作为键:

var apiResponse=[“PHP”、“项目管理”、“PHP动态网站”、“电子商务”、“Magento”、“Magento网站”],
newResponse=[];
forEach(函数(名称、索引){
push({id:index,name:name});
});

console.log(newResponse)这里没有动态键,但是你所有的对象和它们的键看起来都一样。。。只需使用array.forEach()方法对所有数组值进行循环,并将它们推入到新数组的对象中:

let res = [];
sourceArr.forEach( (name, index) => {
   res.push( {id: index, name: name} );
}

很简单。

您可以将每个名称映射到一个对象,该对象使用索引作为
id
,使用值作为
name
属性:

const arr=[“PHP”、“项目管理”、“PHP动态网站”、“电子商务”、“Magento”、“Magento网站”];
const res=arr.map((name,id)=>({id,name}));

控制台日志(res)考虑您的用例:假设newArr是您想要的数组类型 //ar是初始数组

ar=[“PHP”、“项目管理”、“PHP动态网站”、“电子商务”、“Magento”、“Magento网站”];
newArr=[];

对于(i=0;i我使用了传统的方法。希望您正在寻找此方法

B = ["PHP", "Project Management", "PHP dynamic website", "Ecommerce", "Magento", "Magento Websites"]
result = [];

for (i=0;i<B.length;i++)
{
    result[i] = "{id:"+[i]+ "name:"+B[i]+"}";
}
console.log(result);

B=[“PHP”、“项目管理”、“PHP动态网站”、“电子商务”、“Magento”、“Magento网站”]
结果=[];

对于(i=0;iWhy是
“Magento”,“Magento网站”
不在你的结果中?@NickParsons我相信纯粹是出于懒散,你有没有试着用索引?你有什么问题?或者你只是想得到一个完整的解决方案?@Gibor..是的..我认为使用函数式
映射
比命令式
forEach
更简洁。但两者都很好理解两个都提供了数组元素的索引作为回调的可选参数。欢迎您这样做,您可以创建一个可以看起来紧凑的,但它实际上比需要的更糟。请考虑使用<代码> {Node} /代码>代替代码> {Node:Node}。
,因此将
索引命名为
id
更为流畅,以充分利用这一点。此外,使用
map
将允许您放弃更加简洁的
push
。这在许多方面都是错误的。最重要的是,您输出的是字符串数组,但他们要求的是对象数组。