[英]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.