Sti*_*ijn 5 javascript typescript
我有这样一个数组:
unorderedArr = ['pear', 'apple', 'banana', 'peach', 'pineapple'];
Run Code Online (Sandbox Code Playgroud)
我想基于另一个给定的数组来命令这个数组,如下所示:
order = ['peach', 'apple', 'pineapple']
Run Code Online (Sandbox Code Playgroud)
首选结果是:
orderedArr = ['peach', 'apple', 'pineapple', 'banana', 'pear'];
Run Code Online (Sandbox Code Playgroud)
在什么索引上放置不在order数组中的单词并不重要.不能保证order数组中的单词将在无序数组中
当前代码解决方案
我尝试使用这样的switch语句:
const orderedArr = []
unorderedArr.forEach(word => {
switch (word) {
case 'peach':
orderedArr.push(word);
break;
case 'apple':
orderedArr.push(word);
break;
case 'pineapple':
orderedArr.push(word);
break;
default:
orderedArr.push(word);
break;
}
});
Run Code Online (Sandbox Code Playgroud)
但我发现switch语句不会先检查第一个案例.
我认为没有一种简单的非编程方法可以做到这一点。您需要的是一种能够产生所需结果的算法,如下所示:
function partialOrder(preferences, data)
{
var result, reminder;
result = [];
// find preferences and put them into result
preferences.forEach((name) => {
result = result.concat(
data.filter((d) => d.name === name)
);
});
// find remaining data not in preferences
reminder = data.filter((item) =>
preferences.indexOf(item.name) === -1
);
return result.concat(reminder);
}
var preferences = [ "peach", "pear", "pineapple", "<alien-fruit>" ];
var data = [
{ "name": "apple", "image_url": "xApple" },
{ "name": "pineapple", "image_url": "xPineapple" },
{ "name": "peach", "image_url": "xPeach" },
{ "name": "pear", "image_url": "xPear" },
{ "name": "banana", "image_url": "xBanana" }
];
console.log(partialOrder(preferences, data));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |