繁体   English   中英

将数组中的值添加到另一个数组

[英]Add values from an array to another array

我在纯JavaScript中有以下两个arrays:

var smiley_descriptions = [
  'smiley', 'sad', 'wink', 'laugh', 'cheeky', 'blush', 'surprise',
  'indecision', 'angry', 'angel', 'cool', 'devil', 'crying', 'kiss'
];
var smiley_textual_descriptions = [
  ':)', ':(', ';)', ':D', ':P', ':*)', ':-o', ':|',  '>:(', 'o:)',  
  '8-)', '>:-)',  ';(', ':-*'
];

我想将一个数组中的值相加以获得以下结果,但我不明白该怎么做:

var my_new_array = {smiley: ':)', sad: ':(', wink: ';)', laugh: ':D', cheeky: ':P', blush: ':*)', surprise: ':-o', indecision: ':|', angry: '>:(', angel: 'o:)', cool: '8-)', devil: '>:-)', crying: ';(', kiss: ':-*'};

你知道怎么做吗?

与其得到一个包含一个元素的 object 数组,不如得到一个 object 来代替。

 var smiley_descriptions = [ 'smiley', 'sad', 'wink', 'laugh', 'cheeky', 'blush', 'surprise', 'indecision', 'angry', 'angel', 'cool', 'devil', 'crying', 'kiss' ]; var smiley_textual_descriptions = [ ':)', ':(', ';)', ':D', ':P', ':*)', ':-o', ':|', '>:(', 'o:)', '8-)', '>:-)', ';(', ':-*' ]; const result = {}; smiley_descriptions.forEach((item, index) => { result[item] = smiley_textual_descriptions[index]; }) console.log(result);

您的预期结果在语法上是错误的。

如果您想要一个对象数组(作为一个对象的键和另一个对象的值),那么您可以尝试使用map() ,如下所示:

 var smiley_descriptions = [ 'smiley', 'sad', 'wink', 'laugh', 'cheeky', 'blush', 'surprise', 'indecision', 'angry', 'angel', 'cool', 'devil', 'crying', 'kiss' ]; var smiley_textual_descriptions = [ ':)', ':(', ';)', ':D', ':P', ':*)', ':-o', ':|', '>:(', 'o:)', '8-)', '>:-)', ';(', ':-*' ]; var my_new_array = smiley_descriptions.map((k,i) => ({[k]: smiley_textual_descriptions[i]})); console.log(my_new_array);

更新:根据要求的修正结果。 您可以使用Object.assign() ,传播语法和map()

 var smiley_descriptions = [ 'smiley', 'sad', 'wink', 'laugh', 'cheeky', 'blush', 'surprise', 'indecision', 'angry', 'angel', 'cool', 'devil', 'crying', 'kiss' ]; var smiley_textual_descriptions = [ ':)', ':(', ';)', ':D', ':P', ':*)', ':-o', ':|', '>:(', 'o:)', '8-)', '>:-)', ';(', ':-*' ]; var my_new_array = Object.assign(...smiley_descriptions.map((k, i) => ({[k]: smiley_textual_descriptions[i]}))); console.log(my_new_array);

您也可以使用Array.reduce来实现这一点。

 var smiley_descriptions = [ 'smiley', 'sad', 'wink', 'laugh', 'cheeky', 'blush', 'surprise', 'indecision', 'angry', 'angel', 'cool', 'devil', 'crying', 'kiss' ]; var smiley_textual_descriptions = [ ':)', ':(', ';)', ':D', ':P', ':*)', ':-o', ':|', '>:(', 'o:)', '8-)', '>:-)', ';(', ':-*' ]; const result = smiley_descriptions.reduce( (val, cur, index) => ({...val, [cur]: smiley_textual_descriptions[index] }), {} ); console.log(result);

Array.reduce()与索引一起使用。

 var smiley_descriptions = [ 'smiley', 'sad', 'wink', 'laugh', 'cheeky', 'blush', 'surprise', 'indecision', 'angry', 'angel', 'cool', 'devil', 'crying', 'kiss' ]; var smiley_textual_descriptions = [ ':)', ':(', ';)', ':D', ':P', ':*)', ':-o', ':|', '>:(', 'o:)', '8-)', '>:-)', ';(', ':-*' ]; const my_new_array = smiley_descriptions.reduce((acc, cur, index) => { acc[cur] = smiley_textual_descriptions[index]; return acc; }, {}); console.log(my_new_array);

您可以使用.map()Object.fromEntries()到 map 的组合,将您的smiley_descriptions数组转换为[[key, value], ...]对条目的数组,其中每个value都是来自其他数组的关联值在同一个索引。 然后,您可以使用此键值对条目数组使用 Object.fromEntries 构建 object:

 const smiley_descriptions = ['smiley', 'sad', 'wink', 'laugh', 'cheeky', 'blush', 'surprise', 'indecision', 'angry', 'angel', 'cool', 'devil', 'crying', 'kiss' ]; const smiley_textual_descriptions = [ ':)', ':(', ';)', ':D', ':P', ':*)', ':-o', ':|', '>:(', 'o:)', '8-)', '>:-)', ';(', ':-*' ]; const res = Object.fromEntries(smiley_descriptions.map( (desc, i) => [desc, smiley_textual_descriptions[i]]) ); console.log(res);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM