Назначение ключей массиву объектов - PullRequest
3 голосов
/ 02 марта 2020

Я пытаюсь решить эту проблему. По сути, у меня есть массив ключей и массив значений внутри объектов, и я хочу, чтобы у этих значений были ключи.

Ниже моя лучшая попытка на данный момент - обычно используйте python, так что это немного сбивает с толку.

var numbers = [3, 4, 5,6]

var selection = [[1, 2, 3, 4], [6, 5, 4, 3], [2, 9, 4]]
var result = [];

for (arr in selection) {
numbers.forEach(function (k, i) {
result[k] = arr[i]
})
};

console.log(result);

Вывод, который я ищу, выглядит следующим образом:

results = [{3:1,4:2,5:3,6:4}, {..},..]

Люблю несколько указателей для получения правильного вывода.

Примечание. Это для Google Appscript! Поэтому не могу использовать определенные javascript функции (MAP, я думаю, не работает, не уверен, что уменьшить).

Ура!

Ответы [ 3 ]

1 голос
/ 02 марта 2020

Используйте map при выборе и Object.assign

var numbers = [3, 4, 5, 6];

var selection = [
  [1, 2, 3, 4],
  [6, 5, 4, 3],
  [2, 9, 4]
];

var result = selection.map(arr =>
  Object.assign({}, ...arr.map((x, i) => ({ [numbers[i]]: x })))
);

console.log(result);
1 голос
/ 02 марта 2020

Создайте отдельную функцию, которая принимает ключи и значения в качестве аргументов и преобразует их в объект, используя reduce(). Затем примените map() к selections и создайте объект для каждого подмассива, используя эту функцию

var numbers = [3, 4, 5,6]
var selection = [[1, 2, 3, 4], [6, 5, 4, 3], [2, 9, 4]]

function makeObject(keys, values){
  return keys.reduce((obj, key, i) => ({...obj, [key]: values[i]}),{});
}
const res = selection.map(x => makeObject(numbers, x));
console.log(res)
0 голосов
/ 02 марта 2020

Создать новый объект с нуля для каждого числового массива:

const selection = [
  [1, 2, 3, 4],
  [6, 5, 4, 3],
  [2, 9, 4],
];

function objMaker(numarr) {
  const numbers = [3, 4, 5, 6];
  numarr.forEach((num, i) => (this[numbers[i]] = num));
}
console.info(selection.map(numarr => new objMaker(numarr)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...