как назначить все объекты в массиве? - PullRequest
0 голосов
/ 03 июля 2019

Допустим, у меня есть такой массив:

[ { full_name: 'Sickö' }, 
  { location: 'New York City, United States' },
  { follower: '1.2M' },
  { er: '5.59%' },
  { topics: 'Fashion' } ]

, и я хочу сделать его в виде объекта:

{
  fullname: 'Sicko',
  location: 'New York City, United State'
  ..and more
}

Я знаю, что могу объединить ихиспользуя Object.assign, но не знаю, как я могу назначить их все.

Ответы [ 3 ]

4 голосов
/ 03 июля 2019
let all = [ { full_name: 'Sickö' }, 
  { location: 'New York City, United States' },
  { follower: '1.2M' },
  { er: '5.59%' },
  { topics: 'Fashion' } ];

let res = Object.assign({}, ...all);
1 голос
/ 03 июля 2019

Вы можете использовать Array.reduce () , начиная с аккумулятора, равного пустому объекту {}, и использовать Object.assign () на каждой итерации редуктора.Как то так:

const input = [
  {full_name: 'Sickö'},
  {location: 'New York City, United States'},
  {follower: '1.2M'},
  {er: '5.59%'},
  {topics: 'Fashion'}
];

function assign(acc, obj)
{
    return Object.assign(acc, obj);
}

let res = input.reduce(assign, {});
console.log(res);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

Однако Object.assign() предназначен для приема нескольких sources, поэтому вы можете просто использовать его с синтаксисом есть ES6 поддержка:

const input = [
  {full_name: 'Sickö'},
  {location: 'New York City, United States'},
  {follower: '1.2M'},
  {er: '5.59%'},
  {topics: 'Fashion'}
];

let res = Object.assign({}, ...input);
console.log(res);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
0 голосов
/ 03 июля 2019

Когда вы пометили jquery, вам нужно решение, использующее то же самое:

var data = [ { full_name: 'Sickö' }, 
  { location: 'New York City, United States' },
  { follower: '1.2M' },
  { er: '5.59%' },
  { topics: 'Fashion' } ];

var d = $.extend({}, ...data);

console.log(d);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...