Example
var wishlist = [
{name: "Mini Puzzle", size: "small", clatters: "yes", weight: "light"},
{name: "Toy Car", size: "medium", clatters: "a bit", weight: "medium"},
{name: "Card Game", size: "small", clatters: "no", weight: "light"}
];
var presents = [
{size: "medium", clatters: "a bit", weight: "medium"},
{size: "small", clatters: "yes", weight: "light"}
];
guessGifts(wishlist, presents); // must return ["Toy Car", "Mini Puzzle"]
怎么实现guessGifts这个功能,codewars遇到的题目,自己写了一半天没写出来。
我想说明一下,wishlist.length和presents.length的个数未知,并且里面的键值对也是未知的,循环遍历的话要嵌套好几层,有没有其他更简单的办法?
如果是要大量处理的话,把size, clatters, weight拼成一个属性value,再做一点映射。譬如:
size: 'small' -> 0 'medium' -> 1 'large' -> 2 //and so on ...
clatters: 'no' -> 0 'a bit' -> 1 'yes' -> 2
weight: 'light' -> 0 'medium' -> 1 'heavy' -> 2 ...
那么'Card Game'对应的value就是 000 .
这样wishlist就像一个map,每一个name(key)对应一个value,然后presents里面全存的都是value,然后你就
根据这个value去找对应的key就行了,只不过这个key不一定是唯一的。
至于是要先把wishlist全部预处理还是用到了某一个name再处理这一条的内容再缓存,就看你的需求了。