Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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中使用字符串数组对对象数组进行排序_Javascript_Arrays_Sorting - Fatal编程技术网

在Javascript中使用字符串数组对对象数组进行排序

在Javascript中使用字符串数组对对象数组进行排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,许多关于Javascript中排序数组的StackOverflow问题,但是对于这个涉及第二个数组的特定用例,我找不到任何问题 我有以下两个数组。一个数组是数据的主数组,另一个数组用于对主数组进行筛选和排序: 让排序数组=['pts','ast','reb','stl'] 让main数组=[ {key:'stl',val1:'3',val2:5}, {键:'blk',val1:'5',val2:1}, {键:'pts',val1:'23',val2:44}, {键:'fgm',val1:'11

许多关于Javascript中排序数组的StackOverflow问题,但是对于这个涉及第二个数组的特定用例,我找不到任何问题

我有以下两个数组。一个数组是数据的主数组,另一个数组用于对主数组进行筛选和排序:

让排序数组=['pts','ast','reb','stl'] 让main数组=[ {key:'stl',val1:'3',val2:5}, {键:'blk',val1:'5',val2:1}, {键:'pts',val1:'23',val2:44}, {键:'fgm',val1:'11',val2:15}, {key:'ast',val1:'13',val2:15}, {键:'reb',val1:'7',val2:4}, ]; //使用上面的2个数组,我试图创建以下输出 让输出阵列=[ {键:'pts',val1:'23',val2:44}, {key:'ast',val1:'13',val2:15}, {键:'reb',val1:'7',val2:4}, {key:'stl',val1:'3',val2:5}, ]; //到目前为止我的代码 outputArray=mainArray .filterrow=>sortingArray.IncludeRow.key //.排序使用地图和索引

sortingArray.mapy=>mainArray[mainArray.mapx=>x.key.indexOfy]
您能否通过反转操作并在排序数组上执行操作来解决此问题

let sortingArray = ['pts', 'ast', 'reb', 'stl']
let mainArray = [
  { key: 'stl', val1: '3', val2: 5 },
  { key: 'blk', val1: '5', val2: 1 },
  { key: 'pts', val1: '23', val2: 44 },
  { key: 'fgm', val1: '11', val2: 15 },
  { key: 'ast', val1: '13', val2: 15 },
  { key: 'reb', val1: '7', val2: 4 },
];

// Using the 2 arrays above, I am trying to create the following output
let outputArray = [
  { key: 'pts', val1: '23', val2: 44 },
  { key: 'ast', val1: '13', val2: 15 },
  { key: 'reb', val1: '7', val2: 4 },
  { key: 'stl', val1: '3', val2: 5 },
];

outputArray = sortingArray
  .map(key => mainArray.filter((row) => key === row.key))

如果所有想要的字符串都有一个对象,则可以获取一个字符串并从地图中获取对象

让排序数组=['pts','ast','reb','stl'], mainArray=[{key:'stl',val1:'3',val2:5},{key:'blk',val1:'5',val2:1},{key:'pts',val1:'23',val2:44},{key:'fgm',val1:'11',val2:15},{key:'ast',val1:'13',val2:15},{key:'reb',val1:'7',val2:4}, 结果=sortingArray.map Map.prototype.get, 新的MapmainArray.mapo=>[o.key,o] ; console.logresult; .as console wrapper{max height:100%!important;top:0;}从mainArray创建一个对象,并从该对象获取值。 通过这样做,可以避免运行嵌套循环

让排序数组=['pts','ast','reb','stl'] 让main数组=[ {key:'stl',val1:'3',val2:5}, {键:'blk',val1:'5',val2:1}, {键:'pts',val1:'23',val2:44}, {键:'fgm',val1:'11',val2:15}, {key:'ast',val1:'13',val2:15}, {键:'reb',val1:'7',val2:4}, ]; 函数getResultantsortingArray,mainArray{ 常量objFromArray=mainArray.reduceAc,项=>{ acc[项目编号]=项目编号; 返回acc; }, {}; 返回sortingArray.mapitem=>objFromArray[item]; }
console.loggetResultantsortingArray,主阵列;过滤不是我的问题。我的问题与排序有关。这是你需要的吗?现在它将按照您排序数组的顺序返回