【问题标题】:Javascript filter function with sorting not working带有排序的Javascript过滤器功能不起作用
【发布时间】:2020-05-24 18:26:55
【问题描述】:

我有一个以下格式的 json

const myData = [{
  "A111" : "123"
  "name" : "abc",
},
  "A222" : "678"
  "name" : "xyz",
},
{
  "A333" : "456"
  "name" : "abc",
},
{
  "A444" : "643"
  "name" : "abc",
},
{
  "A555" : "078"
  "name" : "xyz",
}]
const test = {
  "123" : "6789",
  "456" : "999",
  "078" : "1234"
}

现在我想要 myData 中名称为“abc”的所有数据,并且数据应根据第二个对象值进行排序。我认为基于我们可以做的第二个对象键。但我不明白。输出应该在对象数组中,其中将包含来自第一个 json 的名称和来自第二个对象的值,以排序方式取决于 secong 对象值排序将完成。 .有人可以帮忙吗。提前致谢。对不起,我的英语不好。

【问题讨论】:

    标签: javascript arrays sorting filter


    【解决方案1】:

    如果这是您需要的东西,请告诉我。

    myData = [{ "A111" : "123","name" : "abc", }, {"A222" : "678", "name" : "xyz" }, { "A333" : "456", "name" : "abc", }, { "A444" : "643", "name" : "abc", }, { "A555" : "078", "name" : "xyz", }];
    
    var test = { "123" : "6789", "456" : "999", "643" : "1234"}
    
    var result = myData.filter(val=>val.name=='abc').sort((a,b)=>Object.keys(a)[0] - Object.keys(b)[0]);
    
    // Or in case if you need to sort on the basis of test object
    
    var result2 = myData.filter(val=>val.name=='abc').sort((a,b)=>test[Object.values(a)[0]] - test[Object.values(b)[0]]);
    
    console.log(result);
    console.log(result2)

    【讨论】:

    • 我做了这个 var result = myData.filter(val=>val.name=='abc').sort((a,b)=>Object.keys(a)[0] -对象.keys(b)[0]); // 或者如果需要根据测试对象排序 var result2 = myData.filter(val=>val.name=='abc').sort((a,b)=>test[Object.values (a)[0]] - 测试[Object.values(b)[0]]);控制台.log(结果);控制台.log(result2);但是得到空数组作为响应。
    猜你喜欢
    • 2021-08-16
    • 2020-11-24
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2018-07-08
    • 1970-01-01
    相关资源
    最近更新 更多