如何在Javascript中将数组映射到对象?

时间:2018-08-24 04:35:46

标签: javascript

我正在使用array.map遍历nodejs / cheerio中的DOM元素。

有我的代码:

const $ = cheerio.load(html);
const lis = $("table[id*='sortable-']").find('tr');

const lisy = lis.map((i, li) => {
  var name = $(li).find('td.h-text-left.over-s-only').text();
  var cnt = $(li).text();

  return {
   content: cnt
  }
}).get();

现在,我想通过“ name”变量返回命名对象,但是现在,.map返回迭代对象:

0: {"cnt": content}, 1: {"cnt": content}

为此,我想像这样按每个“名称”为对象建立索引的对象:

name: {"cnt": content}, name: {"cnt": content}

是否可以这样命名返回的对象?

1 个答案:

答案 0 :(得分:1)

您可以使用Array.prototype.reduce

实现您的目标
var result = lis.reduce(function(map, li) {
    var name = $(li).find('td.h-text-left.over-s-only').text();
    var cnt = $(li).text();
    map[name] = { content: cnt };
    return map;
}, {});