鉴于这两个数组:var amounts = [9, 1, 8, 16, 5, 1, 42]var animals = ["ducks", "elephants", "pangolins", "zebras", "giraffes", "penguins", "llamas"]我必须编写一个函数,它接受两个变量并返回一个组合字符串。预期的输出是:"9 ducks 1 elephants 8 pangolins 16 zebras 5 giraffes 1 penguins 42 llamas"我创建了一个类似于预期字符串的对象。我现在需要按该顺序打印属性。function animalsAmounts(arr1, arr2){ let object = {}; arr2.forEach((arr2, i) => object[arr2] = arr1[i]); return object let result = Object.keys(object).map(function(key) { return [Number(key), obj[key]]; }); return result}console.log(animalsAmounts(amounts, animals))它打印:{ ducks: 9, elephants: 1, pangolins: 8, zebras: 16, giraffes: 5, penguins: 1, llamas: 42 }我不知道如何将预期结果作为字符串返回。我尝试了各种方法来记录数量和动物,但只能返回一种或另一种。
2 回答
![?](http://img1.sycdn.imooc.com/54584ee0000179f302200220-100-100.jpg)
Smart猫小萌
TA贡献1911条经验 获得超7个赞
Array.prototype.join()从数组的项目中创建一个字符串,将它们与您选择的任何内容连接起来。
animals.map((a, i) => `${amounts[i]} ${a}`).join(" ")
var amounts = [9, 1, 8, 16, 5, 1, 42]
var animals = ["ducks", "elephants", "pangolins", "zebras", "giraffes", "penguins", "llamas"]
console.log(animals.map((a, i) => `${amounts[i]} ${a}`).join(" "))
![?](http://img1.sycdn.imooc.com/533e52b90001456f02000200-100-100.jpg)
慕森卡
TA贡献1806条经验 获得超8个赞
您可以对同一索引处的任意数组和映射值采用动态方法,然后再连接到单个字符串。
var amounts = [9, 1, 8, 16, 5, 1, 42]
var animals = ["ducks", "elephants", "pangolins", "zebras", "giraffes", "penguins", "llamas"],
result = [amounts, animals]
.reduce((r, a) => a.map((v, i) => (r[i] ? r[i] + ' ' : '') + v), [])
.join(' ');
console.log(result);
添加回答
举报
0/150
提交
取消