我想根据另一个数组对数组进行排序
例如:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<entryPoint xmlns="http://www.example.com/WEBSERVICES/A2C">
<user>username</user>
<password>userpassword</password>
<input>01016028605</input>
</entryPoint>
</soap12:Body>
</soap12:Envelope>
让myAnswer = [3,1,2,6,6,5,4];
事实上,我先要arrayChild然后再等等。
答案 0 :(得分:0)
您可以使用sorting with map并获取所需顶部值的索引,也可以使用Infinity
及其原始索引将其他值移至底部。
这适用于多个相同的值。
var array = [6, 5, 4, 3, 2, 1],
children = [3, 1, 2],
result = array
.map((v, index) => ({ index, top: (children.indexOf(v) + 1) || Infinity }))
.sort((a, b) => a.top - b.top || a.index - b.index)
.map(({ index }) => array[index]);
console.log(result);
一种更快的方法可能是使用Set
。
这仅适用于唯一值。
var array = [6, 5, 4, 3, 2, 1],
children = [3, 1, 2],
result = Array.from(new Set([...children, ...array]));
console.log(result);
答案 1 :(得分:0)
使用Arrays.sort()
并将自定义比较器传递给它。请尝试以下操作:
let arrayParent = [6, 5, 4, 3, 2, 1];
let arrayChild = [3, 1, 2];
arrayParent.sort((a,b)=>{
var indexA = arrayChild.indexOf(a);
var indexB = arrayChild.indexOf(b);
if(indexA == -1 && indexB == -1){
return 0;
} else if(indexA == -1 || indexB == -1){
return indexA === -1 ? 1 : -1;
} else{
return indexA - indexB;
}
});
console.log(arrayParent);