具有排序功能的Javascript过滤器功能不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有排序功能的Javascript过滤器功能不起作用相关的知识,希望对你有一定的参考价值。

我有以下格式的一个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的名称和来自第二个对象的值,并将根据第二对象的值进行排序。 。有人可以帮忙吗?提前致谢。对不起,我的英语不好。

答案

让我知道这是否是您需要的东西。

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)
另一答案

您可以尝试这个

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"
}

function filterSort(array,param){
  let result=[];
  var filtered= array.filter(x=>x.name==param);  
  filtered.forEach(obj=>{
     var keyNames = Object.keys(obj);
     keyNames.forEach(key=>{
        if(key!="name"){
          var el = {};var keya = obj[key];
          el[keya] = test[keya]; result.push(el)
        }
     })
  })
  return result.sort();
}
console.log(filterSort(myData,"abc"));

以上是关于具有排序功能的Javascript过滤器功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Javascript函数调试 - 为什么这个过滤器功能不能正常工作?

Mootools:如何将点击功能绑定到以编程方式生成的元素

Dojo EnhancedGrid 嵌套排序不起作用

为啥这个(Django)“过滤器”功能不起作用?

VueJS计算过滤器功能不起作用

如何在JavaScript中对二维数组进行排序?