Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用数据的.filter获取特定值_Javascript - Fatal编程技术网

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

Javascript 使用数据的.filter获取特定值,javascript,Javascript,我有一个包含文本数据的网页: [ { “Id”:1, “名词”:“DÓLAR B.NACIÓN”, “可变力量”:3.63636, “康帕”:52, “文塔”:57, “最终实现”:“2019-08-13T10:32:02.810Z”, “奥登”:1 }, { “Id”:2, “名称”:“DÓLAR BLUE”, “变异力量”:19.40298, “康帕”:53, “文塔”:56, “最终实现”:“2019-08-13T10:32:02.810Z”, “奥登”:2 } ] 我只需要显示Id等于

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

[
{
“Id”:1,
“名词”:“DÓLAR B.NACIÓN”,
“可变力量”:3.63636,
“康帕”:52,
“文塔”:57,
“最终实现”:“2019-08-13T10:32:02.810Z”,
“奥登”:1
},
{
“Id”:2,
“名称”:“DÓLAR BLUE”,
“变异力量”:19.40298,
“康帕”:53,
“文塔”:56,
“最终实现”:“2019-08-13T10:32:02.810Z”,
“奥登”: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 = `
I know I should use .filter()...

Not if you just want to find a single item. For that, you use
find
:

var cotizacion = cotizaciones.find(({Id}) => Id === 1);
函数getBNA(回调){ 请求(“URL”、函数(错误、响应、正文){ 如果(错误) { log(“从Lanacion获取信息时出错”,err); 返回 } var bna=JSON.parse(body); 回调(bna); }); } app.all(`/${process.env.BOT_ENDPOINT}`,函数(req,res){ var cotizaciones=cotizaciones.filter(id=>id==1); getVariacion((dolar)=>getBNA((bna)=>{ 风险值状态=` 我知道我应该使用.filter()

如果您只想查找单个项目,则不需要。为此,您可以使用:

实例:

const cotizaciones=[{“Id”:1,“Nombre”:“DÓLAR B.NACIÓN”,“variacionforcentual”:3.6363636,“Compra”:52,“Venta”:57,“ultimaucturalization”:“2019-08-13T10:32:02.810Z”,“Orden”:1},“Id”:2,“Nombre”:“DÓLAR BLUE”,“variacionforcentual”:19.40298,“Compra”:53,“Venta”:56,“ultimaalization”:“2019-08-T10:32:8102”,“Orden”;
var cotizacion=cotizaciones.find(entry=>entry.Id==1);

console.log(cotizacion.variacionforcentual、cotizacion.Compra、cotizacion.Venta、cotizacion.ultimaactualization);
首先应该有一个要筛选的数组

从您的示例代码中可以看出,cotizaciones不是数组

因此,首先将数组值分配给协同操作

一旦cotizaciones成为一个数组,您就可以实现如下过滤器: cotizaciones.filter(arrValue=>arrValue.id==1)

arrValue只是一个名称,可以是任何东西。但我认为这很清楚;)

您还可以使用cotizaciones.find(arrValue=>arrValue.id==1)


如果您只需要从数组中找到一个对象,这是更好的选择。

首先,如果您有一个要与ID进行比较的键列表,则需要一组:

const rows = [.....];
const result = rows.filter( row => mySet.has(row.Id))
然后你需要过滤你的数据

其中ID是正在查看的密钥

它将使运行时为O(n+m),其中n是集合的转换/生成,m是行的移动。

是的,
filter()
方法将非常有用,如果您希望数据集具有多个具有相同“Id”的对象/条目。此外,它的实现非常简单。这里有它

函数过滤器数据(数据,id){
返回数据.filter(item=>item[“Id”]==Id);
}
var数据=[{“Id”:1,“Nombre”:“DÓLAR B.NACIÓN”,“VariacionPorcentual”:3.63636,“Compra”:52,“Venta”:57,“Ultimactualization”:“2019-08-13T10:32:02.810Z”,“Orden”:1},{“Id”:2,“Nombre”:“DÓLAR BLUE”,“VariacionPorcentual”:19.40298,“Compra”:53,“Venta”:56,“Ultimactualization”:“2019-08-130:32:02.810Z”,“Orden];

console.log(filterData(data,1));
很好的解构!!不知道你也可以在arr opperators中这样做:)不,我需要从Id:1中找到variacionpercentual、Compra、Venta和ultimaactualization的值。在我的代码的基础上,你发布它的定义,我应该在getBNA中为每个值定义((bna)=>{???@facutopa-右。
cotizacion
变量将引用数组中具有这些属性的对象。如果将唯一键存储在一个集合中,则可以说:
.filter(row=>mySet.has(row.Id))
@facutopa-我添加了一些实例。另外,我有
id
,但是你的属性名为
id
,所以我修复了这个问题。
const rows = [.....];
const result = rows.filter( row => mySet.has(row.Id))