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))