我仍在学习,我试图为此找到解决方案,但我认为我缺少/忽略了一些东西,似乎无法破解,
我正在内部创建一个节点.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创建一个新数组。我想念什么?谢谢
答案 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; })