快速问题。如果您有两个对象数组,并且希望'对齐'这些对象数组,以便确保每个数组的对象与另一个数组的顺序相同,该怎么办?如果您不知道数组中任何对象包含的键和值...更不用说它们甚至是什么顺序了?
因此,您需要为
[].filter
,
[].map
等获取'通配符表达式'。如何获取通配符表达式?
var jux = (function(){
'use strict';
function wildExp(obj){
var keysCrude = Object.keys(obj),
keysA = ('a["' + keysCrude.join('"], a["') + '"]').split(', '),
keysB = ('b["' + keysCrude.join('"], b["') + '"]').split(', '),
keys = [].concat(keysA, keysB)
.sort(function(a, b){ return a.substring(1, a.length) > b.substring(1, b.length); });
var exp = keys.join('').split(']b').join('] > b').split(']a').join('] || a');
return exp;
}
return {
sort: wildExp
};
})();
var sortKeys = {
k: 'v',
key: 'val',
n: 'p',
name: 'param'
};
var objArray = [
{
k: 'z',
key: 'g',
n: 'a',
name: 'b'
},
{
k: 'y',
key: 'h',
n: 'b',
name: 't'
},
{
k: 'x',
key: 'o',
n: 'a',
name: 'c'
}
];
var exp = jux.sort(sortKeys);
console.log('@juxSort Expression:', exp);
console.log('@juxSort:', objArray.sort(function(a, b){
return eval(exp);
}));
你也可以对每个对象进行迭代来使用此函数,为每个对象的所有键创建更好的集合表达式,然后以此方式过滤数组。
这是API Juxtapose中的一个小片段,我几乎已经完成了。它实现了对象等价性(带例外),对象联合和数组压缩。如果你的项目需要或想要这些功能,请在评论中提出,我会尽快使库可用。
希望这有所帮助! Happy coding :)