[英]How to reformat output of resolve/promise.all?
我想帮助重新格式化从 promise.all 返回的 output,它作为对象数组返回,但我只想转换为一串值,结果串在一起,每个结果之间有一个空格。
当前 output
[
{ yesnon: 'non' },
{ yesnon: 'yes' },
{ yesnon: 'yes' },
{ yesnon: 'yes' },
{ yesnon: 'yes' },
{ yesnon: 'yes' },
{ yesnon: 'yes' },
{ yesnon: 'yes' }
]
目标 Output:(结果之间有空格的单行字符串,删除“yesnon:”)
non yes yes
编码
const fs = require('fs');
const readline = require('readline')
var mynumtosearch = 56700;
var searchfile = 35;
const p1 = new Promise((resolve, reject) => {
let lineCount = 0;
let v=0;
let yesnon = "non";
let readStream = readline.createInterface({
input: fs.createReadStream('PATH TO MY FILE','utf8')
});
readStream.on("line", (line) => {
lineCount++;
// console.log(line)
if(line==mynumtosearch)
{
yesnon="yes";
console.log("I am here");
v++;
}
});
readStream.on("close", () =>
resolve({
yesnon
})
)
});
const p2 = new Promise((resolve, reject) => {
let readStream = readline.createInterface({
input: fs.createReadStream('PATH TO MY FILE','utf8')
});
let lineCount = 0; let v=0;
let yesnon = "non";
readStream.on("line", (line) => {
lineCount++;
// console.log(line)
if(line==mynumtosearch)
{
yesnon="yes";
console.log("I am here");
v++;
}
});
readStream.on("close", () =>
resolve({
yesnon
}) )
});
const p3 = new Promise((resolve, reject) => {
let lineCount = 0; let v=0;
let yesnon = "non";
let readStream = readline.createInterface({
input: fs.createReadStream('PATH TO MY FILE','utf8')
});
readStream.on("line", (line) => {
lineCount++;
//console.log(line)
if(line==mynumtosearch)
{
yesnon="yes";
console.log("I am here");
v++;
}
});
readStream.on("close", () =>
resolve({
yesnon
}) )
});
console.log(h);
Promise.all([p1, p2, p3]).then((results) => {console.log(results);
});
这将重新格式化 output 阵列:
let arr = [ { yesnon: 'non' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' } ]; let output = arr.map(e => e['yesnon']).join(' '); console.log(output);
在 collections 上使用操作时,这很简单。 .map()
解构( {yesnon}
)每个元素,仅提取yesnon
(字符串)的值,并且连接连接由空格分隔的结果字符串。
results = [ { yesnon: 'non' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' }, { yesnon: 'yes' } ] console.log(results.map( ({yesnon}) => yesnon).join(' '))
尝试在您的 Promise.all() 中使用 .map() 和 .join() 。然后结果
Promise.all([p1, p2, p3]).then((results) => {
console.log(
results.map(({ yesnon }) => yesnon).join(' ')
);
});
首先,您将对象数组转换为具有值的字符串数组,然后将此字符串数组转换为值之间有空格的字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.