Как создать ключ в объекте из данных внутри массива? - PullRequest
0 голосов
/ 09 января 2019

Как создать ключ в объекте из данных внутри массива?

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 голосов
/ 09 января 2019

Просто поместите объект в массив и верните его!

'use strict';

function createIt(data) {
  let res = [];

  for (const i of data) {
    res.push({
      fruit: i
    });
  }

  return res;
}

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

console.log(createIt(list));
0 голосов
/ 09 января 2019

Вам нужен массив. Создайте объект внутри цикла и помещайте созданный объект в массив в каждой итерации. Наконец, верните этот массив:

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))
0 голосов
/ 09 января 2019

Вы можете просто использовать .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; }
0 голосов
/ 09 января 2019

Чтобы исправить исходный код, вы должны определить исходный массив, а не объект, и помещать объект в этот массив на каждой итерации:

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))
0 голосов
/ 09 января 2019

Сопоставить входной массив и получить массив объектов с key fruit

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...