映射或每个具有 Underscore.js 的值

Map or Each for Values with Underscore.js

我正在尝试找出更新我的 underscore.js .map 方法的最佳方法,因为包含了一个新的字段值,该值应该与传递给 [=16 的当前值分组=].我应该在新更新中使用 .map 还是 .each 以及我应该将值存储为对象还是数组中的对象并将其传递给 .map.each 以实现我想要的结果?目前我尝试使用 .map 的对象方法,但值以数组的形式出现。

正确格式:

[ { reportTitle: 'Title1', reportLink: 'test.com', id: 166 },
  { reportTitle: 'Title2', reportLink: 'test2.com', id: 166 } ]

原件(工作):

var links = _.map(req.body.reportLink, function(link){
                    return {
                        reportLink: link,
                        id: blog.id
                    };
                });

输出:

[ { reportLink: 'test.com', id: 166 },
  { reportLink: 'test2.com', id: 166 } ]

更新(不工作):

var linkAttributes = { title: req.body.reportTitle, link: req.body.reportLink}
var links = _.map(linkAttributes, function(link) {
  return {
      reportTitle: link.title,
      reportLink: link.link,
      id: blog.id
  };

});

输出:

[ { reportTitle: [ 'Test 1', 'Test 2' ],
    reportLink: [ 'test1.com', 'test2.com' ],
    id: 164 } ]

_.map -> 第一个参数应该是 array

var linkAttributes = [
                       { 
                         title: req.body.reportTitle, 
                         link: req.body.reportLink
                        }
                     ]; // shoud be array
var links = _.map(linkAttributes, function(link) {
  return {
      reportTitle: link.title,
      reportLink: link.link,
      id: blog.id
  };

现在很清楚你在问什么,下面应该可以解决问题:

const zip = (arr1, arr2) =>
  [...new Array(Math.max(arr1.length, arr2.length))].map(
    (_, i) => [arr1[i], arr2[i]],
  );

const reportTitle = ['test-title', 'test-title2'];
const reportLink = ['test.com', 'test2.com'];
console.log(
  zip(reportTitle, reportLink).map(
    ([reportTitle, reportLink]) => ({
      reportTitle,
      reportLink,
      id: 166,
    }),
  ),
);

zip 实用程序采用 2 个数组(例如 [1,2,3] 和 [5,6,7])和 returns 一个数组,每个数组都有一个元素:([[1,5],[2,6],[3,7] 来自示例)

然后maps在这个数组上创建一个对象数组。

传递给 map 的函数使用 destructuring parameters 快速命名传递给 map 函数的数组中的 2 个元素。