Создание нескольких массивов объектов - PullRequest
3 голосов
/ 19 июня 2020

Для эксперимента, который я пишу, мне нужно составить шесть таких списков, как показано ниже.

var list1 = [];
var enc_len_1 = pregenerated_faces[1].encoding_faces.length;
var rec_len_1 = pregenerated_faces[1].recall_faces.length; 

for (var i = 0; i < enc_len_1; i++){
    var obj_encode = { 
        'encode': pregenerated_faces[1].encoding_faces[i]
    };
    list1.push(obj_encode);
};

for (var i = 0; i < rec_len_1; i++){
  var obj_recall = { 
      'reacall': pregenerated_faces[1].recall_faces[i]
  };
  list1.push(obj_recall);
};

Каждый список будет выглядеть так: list = [{encode: ... jpg} , {кодировать: ... jpg} ..., {вспомнить: ... jpg}, {вспомнить: ... jpg} ...]

Что является более разумным способом сделать шесть таких без написания шестикратного избыточного кода? Ах да, pregenerated_faces - это массив объектов. json, содержащий все строки изображений для кодирования и отзыва лиц.

Ответы [ 2 ]

1 голос
/ 19 июня 2020
var lists = [];
for (var face of pregenerated_faces) { //should loop 6 time
  var list = [];
  face .encoding_faces.forEach( e => list.push({'encode': e}));
  face .recall_faces.forEach( e => list.push({'recall': e}));
  list.push(list);
}
0 голосов
/ 19 июня 2020

Проверьте это, я создал функцию, которая предоставит вам N списков в зависимости от размера ввода ваших pregenerated_faces, и ваше средство визуализации списков также не реализовано, поэтому его можно использовать где угодно ... и можно изменить тоже

function getNObjects(N, keyCallback) {
  const output = []
  for (var i = 0; i < N; i++) {
    output.push(keyCallback(i));
  }
  return output
}

// your code
function createList(index) {
  var list = [];
  var enc_len = pregenerated_faces[index].encoding_faces.length;
  var rec_len = pregenerated_faces[index].recall_faces.length;

  for (var i = 0; i < enc_len; i++) {
    var obj_encode = {
      'encode': pregenerated_faces[index].encoding_faces[i]
    };
    list.push(obj_encode);
  };

  for (var i = 0; i < rec_len; i++) {
    var obj_recall = {
      'reacall': pregenerated_faces[index].recall_faces[i]
    };
    list.push(obj_recall);
  };
  return list
}
// Test case
const pregenerated_faces = [{
    name: "Ardis Pool",
    gender: "male"
  },
  {
    name: "Barbra Panganiban",
    gender: "female"
  },
  {
    name: "Ralph Sales",
    gender: "male"
  },
]
// Test Function
function testFunction(index) {
  var list = [];
  var enc_len = pregenerated_faces[index].name
  var rec_len = pregenerated_faces[index].gender

  var obj_encode = {
    'encode': enc_len
  };
  list.push(obj_encode);
  obj_recall = {
    'reacall': rec_len
  };
  list.push(obj_recall);
  return list
}

const [one, two, three] = getNObjects(3, testFunction);
console.log(one, two, three)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...