现有阵列中使用特定元素的新阵列

时间:2018-08-14 08:08:54

标签: javascript arrays node.js

我仍在学习,我试图为此找到解决方案,但我认为我缺少/忽略了一些东西,似乎无法破解,

我正在内部创建一个节点.js文件,

我有这个功能,

var goingTomorrow = rows.filter(ifDateTomorrow);
        function ifDateTomorrow(value) {
            return value[5] === dateTomorrow;
        }

将数组===明天日期中的元素5返回到变量goingTomorrow的所有行,这行得通。

那么我有

var sum = 0;
        for (var x = 0; x < goingTomorrow.length; x++) {
            sum += + goingTomorrow[x][6];
            }

console.log(goingTomorrow.length + ' Bookings: ' + sum + ' pax total for tomorrow'); 

通过将第5个索引中的所有元素相加得出总计,从而计算当天的总人数。也可以。

但是现在我想返回一个仅包含特定元素/索引的新数组,以便在电子邮件中发送(因此不需要所有字段)。

我使用goingTomorrow来运行代码。 goingTomorrow当前输出:

1,John,w,tourname,2018-08-14,2018-08-14,3,820467370,test address,AS,0,john@xxx.com,0,6,James,M,tourname,2018-08-05,2018-08-14,2,54546456,test address,AS,0,james@xxx.com,0,

但是在电子邮件中,我想选择要输出的特定元素,以及输出到数组中的每个结果都在新行上的内容。

这就是我想要的输出,

John,w,2018-08-14,3,820467370,test address,john@xxx.com, 
James,M,2018-08-14,2,54546456,test address,james@xxx.com,

我尝试过foreach,map,reduce和newArray都收效甚微。

因此,如何使用我想要的特定元素从goingTomorrow创建一个新数组。我想念什么?谢谢

2 个答案:

答案 0 :(得分:1)

您可以将destructuring assignment用于所需的索引并映射新数组。

var array = [[1, 'John', 'w', 'tourname', '2018-08-14', '2018-08-14', 3, '820467370', 'test address', 'AS', 0, 'john@xxx.com', 0], [6, 'James', 'M', 'tourname', '2018-08-05', '2018-08-14', 2, '54546456', 'test address', 'AS', 0, 'james@xxx.com', 0]],
    result = array.map(({ 1: name, 2: gender, 4: date, 7: number, 11: email }) =>
        [name, gender, date, number, email]);

console.log(result);
document.body.innerHTML += result.join('<br>');

答案 1 :(得分:0)

看起来您想为此使用map函数。 使用map函数,您可以为原始数组中的每个元素返回一个Modify元素。

示例:

newArray = originalArray.map((currentElementFromTheArray, indexOfThisElementInTheArray, originalArray) => { return newElement; })