【问题标题】:Javascript - Converting a String to an Array and Back Again within Chained Map MethodsJavascript - 在链式映射方法中将字符串转换为数组并再次返回
【发布时间】:2019-11-29 16:32:38
【问题描述】:

目标:我正在尝试将 .map() 方法与字符串到数组的转换链接在一起,然后返回到字符串 [当前通过 .split(" ") 和 .join("")]。

上下文:挑战要求将一串二进制数转换为文本(请注意,这不是我要寻求帮助的内容)。

我的回答(有效):

function binaryAgent(str) {
  let arr = str.split(" ");
  //METHOD TWO -  Chaining the commands together
  arr.map((k,index) => {
    arr.unshift(parseInt(k,2));
    arr.splice(index+1,1);    
  }).map((k,index) => {
    arr.unshift(String.fromCharCode(arr[index]));
    arr.splice(index+1,1);
  })
  let string = arr.join("");
  return string;
}
binaryAgent("01000001 01110010 01100101 01101110 00100111 01110100 00100000");

工作(我想了解是否有办法让它工作但我错过了):

function binaryAgent(arr) {

  //METHOD TWO -  Chaining the commands together
  let string = arr.split(" ").map((k,index) => {
    arr.unshift(parseInt(k,2));
    arr.splice(index+1,1);    
  }).map((k,index) => {
    arr.unshift(String.fromCharCode(arr[index]));
    arr.splice(index+1,1);
  }).join("");

  return string;
}
binaryAgent("01000001 01110010 01100101 01101110 00100111 01110100 00100000");

第二段代码返回“arr.unshift 不是函数”错误。就好像原始字符串没有被转换为数组一样,即使如果写在它自己的行上它也会。 IE。 arr = arr.split(" ") 工作正常并将字符串转换为数组。

非常感谢任何帮助。

【问题讨论】:

  • 您的映射函数没有返回任何内容,这意味着您将在第一个 map() 之后拥有一组 undefined 值。如果这是故意的,最好使用forEach()

标签: javascript arrays


【解决方案1】:

Array.map() 方法迭代一个数组,创建一个新数组,并对每个项目应用一个回调函数。无论回调函数返回什么,都是新数组中项目的值。

您正在使用 map 来迭代数组,但是您正在改变原始数组,并且不会从回调中返回任何内容(隐式返回 undefined)。

在回调中变换k(项目)并返回:

function binaryAgent(str) {
  return str.split(" ")
    .map(k => String.fromCharCode(parseInt(k, 2)))
    .join("");
}

const result = binaryAgent("01000001 01110010 01100101 01101110 00100111 01110100 00100000");

console.log(result);

【讨论】:

    猜你喜欢
    • 2010-11-28
    • 2015-01-19
    • 2013-02-18
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 2011-11-15
    相关资源
    最近更新 更多