我如何排序一个数组尽可能接近一个目标数组。
例如:
数组最多只能包含4个元素:
['javascript','html','css','result'];
但在不是的情况下,排序应如下所示:
['css','result','html'];
排序为['html','css','result'];
['result','css','javascript'];
排序为['javascript','css','result'];
标准是使它尽可能接近['javascript','html','css','result'];
,并且在不存在特定元素的地方,跳过它。
我当前的代码似乎做得不对,我把它包含在下面:
null
function setFiddleTabsArray(updatedFiddleTabs) {
if (updatedFiddleTabs.length === 4) {
updatedFiddleTabs = ['javascript', 'html', 'css', 'result'];
} else {
const correctFiddleTabsOrder = ['javascript', 'html', 'css', 'result'];
const fiddleTabsSorter = (a, b) => {
if (correctFiddleTabsOrder.includes(a)) {
return -1;
}
if (correctFiddleTabsOrder.includes(b)) {
return 1;
}
return 0;
};
updatedFiddleTabs.sort(fiddleTabsSorter);
return updatedFiddleTabs;
}
return updatedFiddleTabs;
}
const test1 = setFiddleTabsArray(['css', 'html', 'result']);
console.log(test1);
null
我怎么修好它?
另一种选择是将排序排名提取到一个单独的对象,并使用以下逻辑进行排序:
const sortRanking = {
javascript: 0,
html: 1,
css: 2,
result: 3,
};
const setFiddleTabsArray = (updatedFiddleTabs) =>
updatedFiddleTabs.sort((a, b) => {
if (sortRanking[a] > sortRanking[b]) return 1;
if (sortRanking[a] < sortRanking[b]) return -1;
return 0;
});
const test1 = setFiddleTabsArray(["css", "html", "result"]);
console.log(test1);
这使得它非常明确和易于遵循imo
你总是会得到1,因为它总是在数组中。您需要根据匹配项的索引进行排序
null
function setFiddleTabsArray(updatedFiddleTabs) {
if (updatedFiddleTabs.length === 4) {
updatedFiddleTabs = ['javascript', 'html', 'css', 'result'];
} else {
const correctFiddleTabsOrder = ['javascript', 'html', 'css', 'result'];
const fiddleTabsSorter = (a, b) => {
return correctFiddleTabsOrder.indexOf(a) - correctFiddleTabsOrder.indexOf(b);
};
updatedFiddleTabs.sort(fiddleTabsSorter);
return updatedFiddleTabs;
}
return updatedFiddleTabs;
}
const test1 = setFiddleTabsArray(['css', 'html', 'result']);
console.log(test1);
问题内容: 我有一个数组和一个引用数组。的大小至少等于。例如 实际上是在指定时间信号中的峰值位置,并且包含稍后时间的峰值位置。但是某些元素实际上是不是我想要的峰(可能是由于噪声等),我想找到“真正的”一个基础。中的“真实”元素应与中的元素接近,在上面给出的示例中,中的“真实”元素应为。在这个例子中应该很明显不是我们想要的,因为它们与B中的任何元素都相去甚远。如何在python / matlab中以
有没有更时髦的方法来解决这个问题?
问题内容: 假设我有一个自定义类的数组,每个类都包含一个名为 我还有一个任意值数组,称为,如下所示: 我的目标是对所有QB 进行排序,然后再对所有WR,RB和TE 进行排序。 我当前的操作方式是遍历中的每个元素,然后遍历所有播放器以附加到新数组。但是,我想不出一种更简单(更有效)的方法来做到这一点。非常感谢任何提示或指示。谢谢。 问题答案: 编辑: 我原来的方法是狗屎。这篇文章吸引了很多人的注意力
问题内容: 从这个问题的答案(使用一个较少的内存,沿着一个特定轴对另一个numpy数组进行排序)中,我学习了如何根据另一个numpy数组的值对多维numpy数组进行排序,而又不创建太多额外的数组。 但是,仅当数组和具有相同形状时才有效。我的数组是一维数组,但数组是ND数组(未指定N)。通过一维数组的值在特定轴上对数组进行排序是一种好方法(高效)吗? 问题答案: 使用与关键字参数: 如果要使用花式索
问题内容: 是否可以对看起来像这样的数组进行排序和重新排列: 匹配此数组的安排: 不幸的是,我没有任何要跟踪的ID。我将需要优先处理items-array,以使其尽可能接近sortingArr。 更新: 这是我正在寻找的输出: 任何想法如何做到这一点? 问题答案: 就像是: 这是一个较短的代码,但是会破坏数组: