首页 > 解决方案 > 如何从数组中的数据创建对象中的键?

问题描述

如何从数组中的数据创建对象中的键?

function createIt(data) {
  var obj = {};
  for (i of data) {
    obj["fruit"] = i;
  }
  return [obj];
}

var list = ["orange", "apple", "pineapple"];
console.log(createIt(list));
在我上面的代码中,obj.fruit只显示一个值,我想创建这样的东西:

[
  { fruit: "orange" },
  { fruit: "apple" },
  { fruit: "pineapple" }
]

标签: javascriptarraysloopsobject

解决方案


映射输入数组并返回带有key水果的对象数组

var list = ["orange", "apple", "pineapple"];
console.log(list.map(i => ({ fruit: i })));

这里的 for 循环返回一个新数组,即使我不知道你为什么不想使用map数组方法:

const list = ["orange", "apple", "banana"];

const newList = [];
for (let i = 0; i < list.length; i++) {
  newList.push({
    fruit: list[i]
  });
}

console.log(newList);

这里是一个改变输入数组的 for 循环,即使再一次,也不知道为什么不能使用map数组方法:

const list = ['orange', 'banana', 'apple'];

for (let i = 0; i < list.length; i++) {
  list.splice(i, 1, {
    fruit: list[i]
  });
}

console.log(list);

回到你原来的代码:

function createIt(data){
  var obj = {};
  for(i of data){
    obj["fruit"]= i
  }
  return [obj]
}
var list = ["orange", "apple", "pineapple"];
console.log(createIt(list))

您确实创建了一个对象,并且始终覆盖fruit键的值。您应该创建一个数组,将对象推入循环中的数组中,然后返回该数组,如下所示:

function createIt(data) {
  var objs = [];
  for (i of data) {
    objs.push({fruit: i});
  }
  return objs;
}
var list = ["orange", "apple", "pineapple"];
console.log(createIt(list))


推荐阅读