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

时间:2019-01-09 12:17:33

标签: javascript arrays loops object

如何通过数组中的数据在对象中创建键?

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" }
]

5 个答案:

答案 0 :(得分:5)

映射输入数组,并返回带有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))

答案 1 :(得分:1)

要修复原始代码,您应该定义一个初始数组而不是一个对象,并在每次迭代时将一个对象推入该数组:

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

也就是说,.map在基于另一个数组中的每个项目创建新数组时更为合适。

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

答案 2 :(得分:1)

您需要一个数组。在循环内创建对象,并在每次迭代中将创建的对象推入数组。最后返回该数组:

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

尽管您可以使用Array.prototype.map()缩短代码:

  

map()方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

function createIt(data){
  return data.map(d => ({fruit: d}));
}
var list = ["orange", "apple", "pineapple"];
console.log(createIt(list))

答案 3 :(得分:0)

您可以简单地使用.map()来获得所需的输出:

let list = ["orange", "apple", "pineapple"];

let result = list.map(k => ({fruit: k}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 4 :(得分:0)

只需将对象推入数组并返回它!

requests.get(url, headers={'Authorization': 'MY_TOKEN_HERE'}
requests.get(url, headers={'Authorization': 'Bearer MY_TOKEN_HERE'}
requests.get(url, headers={'Authorization': 'access_token MY_TOKEN_HERE'}