javascript - 使用数据的 .filter 获取特定值

标签 javascript

我有一个包含文本数据的网页:

[
   {
      "Id":1,
      "Nombre":"DÓLAR B.NACIÓN",
      "VariacionPorcentual":3.63636,
      "Compra":52,
      "Venta":57,
      "UltimaActualizacion":"2019-08-13T10:32:02.810Z",
      "Orden":1
   },
   {
      "Id":2,
      "Nombre":"DÓLAR BLUE",
      "VariacionPorcentual":19.40298,
      "Compra":53,
      "Venta":56,
      "UltimaActualizacion":"2019-08-13T10:32:02.810Z",
      "Orden":2
   }
]

我只想显示 Id 等于 1 的数据。我知道我应该使用 .filter() 但我不知道如何在我的代码中实现它。此 Id 应过滤 bna.compra、bna.venta 等字段的值。

function getBNA(callback){
  request("URL", function(err, response, body){
         if (err)
        {
          console.log("Error getting information from Lanacion", err);
          return
        }
        var bna = JSON.parse(body);
        callback(bna);
  });
}

app.all(`/${process.env.BOT_ENDPOINT}`, function(req, res){

  var cotizaciones = cotizaciones.filter(id => id===1);
  getVariacion((dolar) => getBNA((bna) => {
    var status = `🗓️ ${dolar.fecha}
💱Informal:
Compra: $${dolar.compra} | Venta: $${dolar.venta}
Variación: ${dolar["class-variacion"]!=='up' ? "🔻" : "🔺"} ${dolar.variacion}

🏦BNA: 
Compra: $${bna.compra} | Venta: $${bna.venta}
Variación: ${(bna.VariacionPorcentual)==0 ? "➖" : (bna.VariacionPorcentual)<0 ? "🔻" : "🔺"} ${(bna.VariacionPorcentual)}%`;  

例如,我需要得到:

🗓️ 12/09/2019 - 10:30
💱Informal:
Compra: $51,88 | Venta: $54,08
Variación:🔺 16,18%

这里是 Id:1 的值

🏦 BNA: 
Compra: $52(compra)  | Venta: $57 (venta)
Variación: 🔺 3.63636 (variacion porcentual)

最佳答案

I know I should use .filter()...

如果您只想查找单个项目,则不会。为此,您使用 find :

var cotizacion = cotizaciones.find(({Id}) => Id === 1);

实例:

const cotizaciones = [{"Id":1,"Nombre":"DÓLAR B. NACIÓN","VariacionPorcentual":3.63636,"Compra":52,"Venta":57,"UltimaActualizacion":"2019-08-13T10:32:02.810Z","Orden":1},{"Id":2,"Nombre":"DÓLAR BLUE","VariacionPorcentual":19.40298,"Compra":53,"Venta":56,"UltimaActualizacion":"2019-08-13T10:32:02.810Z","Orden":2}];
var cotizacion = cotizaciones.find(entry => entry.Id === 1);
console.log(cotizacion.VariacionPorcentual, cotizacion.Compra, cotizacion.Venta, cotizacion.UltimaActualizacion);

请注意,我在参数列表中使用了解构来从对象中选取 id 属性。没有解构:

var cotizacion = cotizaciones.find(entry => entry.Id === 1);

实例:

const cotizaciones = [{"Id":1,"Nombre":"DÓLAR B. NACIÓN","VariacionPorcentual":3.63636,"Compra":52,"Venta":57,"UltimaActualizacion":"2019-08-13T10:32:02.810Z","Orden":1},{"Id":2,"Nombre":"DÓLAR BLUE","VariacionPorcentual":19.40298,"Compra":53,"Venta":56,"UltimaActualizacion":"2019-08-13T10:32:02.810Z","Orden":2}];
var cotizacion = cotizaciones.find(entry => entry.Id === 1);
console.log(cotizacion.VariacionPorcentual, cotizacion.Compra, cotizacion.Venta, cotizacion.UltimaActualizacion);


FWIW,我强烈建议从 var 转移到 letconst。 :-)

关于javascript - 使用数据的 .filter 获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57479065/

相关文章:

javascript - 对于数组中的每个值更改为 CSS 中的相同图像

javascript - 如何使用数据表在表格上显示更少的文本?

javascript - 如何使表格内的内容(Fusion Chart LED 仪表图)具有响应性?

javascript - Jest - 函数不调用其子异步函数

javascript - CSS :hover not working in chrome for delayed dynamically added classes

javascript - 安卓网页 View : inject a function call to the onclick event of a checkbox

javascript - jQuery AJAX 中的另一个函数完成后重新运行原始函数

javascript - 使用 Puppeteer 处理将文件上传到网站的对话框

Javascript 访问器属性混淆

javascript - 将对象数据传递给上层对象属性