我有一个1xn大小的数组,其中顺序和索引位置很重要。可能很大n。
recipe = ['flour', 'eggs', 'apples', 'cinnamon', 'baking powder', 'sugar']
假设我有一个函数返回两个随机排列的数组。
another_recipe_values = [ 2, 4, 6 ]
其中值对应于单独的1xn数组中的以下键
another_recipe_keys = [ 'apples', 'sugar', 'eggs']
什么是优雅的方式或快速方式对两个数组进行排序以适合/匹配第一个数组中的n维?
像这样new_recipe_values = [ 0, 6, 2, 0, 0, 4]
new_recipe_keys = [ null, 'eggs', 'apples', null, null, 'sugar']
* update编辑了输出变量。
答案 0 :(得分:2)
我会去
const recipe = ['flour', 'eggs', 'apples', 'cinnamon', 'baking powder', 'sugar']
let another_recipe_values = [ 2, 4, 6 ];
let another_recipe_keys = [ 'apples', 'sugar', 'eggs']
const indices = recipe.map(ingredient => another_recipe_keys.indexOf(ingredient));
another_recipe_values = indices.map(i => i<0 ? 0 : another_recipe_values[i]);
another_recipe_keys = indices.map(i => i<0 ? null : another_recipe_keys[i]);
更好(更快,更简单)的选项可能是
const ordered_ingredients = ['flour', 'eggs', 'apples', 'cinnamon', 'baking powder', 'sugar']
const another_recipe = {
apples: 2,
sugar: 4,
eggs: 6
};
const another_recipe_values = ordered_ingredients.map(ing =>
ing in another_recipe ? another_recipe[ing] : 0
);
const another_recipe_keys = ordered_ingredients.map(ing =>
ing in another_recipe ? ing : null
);
您还可以从两个阵列动态构建another_recipe
对象。
答案 1 :(得分:2)
只需使用map()
函数,并设置null为0
值的位置。
recipe.map((value, index) => recipe_values[index] != 0? value: null)
var recipe = ['flour', 'eggs', 'apples', 'cinnamon', 'baking powder', 'sugar']
var recipe_values = [ 0, 6, 2, 0, 0, 4]
var result = recipe.map((value, index) => recipe_values[index] != 0? value: null)
console.log(result)
答案 2 :(得分:1)
只需在null
中返回值为0
的{{1}},否则将该值用作食谱的索引
another_recipe_values
&#13;