Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
拆分和对象-JavaScript_Javascript - Fatal编程技术网

拆分和对象-JavaScript

拆分和对象-JavaScript,javascript,Javascript,我正在编写一个名为“countStr”的函数 我需要返回一个对象,其中每个键都是给定字符串中的一个单词,其值是该单词在给定字符串中出现的次数。如果字符串为空,则必须返回空对象 到目前为止,我的功能如下: function countStr(str) { myObject = {}; if(str.length === 0) { return myObject; } else { myArray = str.split(' '); for(var i = 0;

我正在编写一个名为
“countStr”
的函数

我需要返回一个对象,其中每个键都是给定字符串中的一个单词,其值是该单词在给定字符串中出现的次数。如果字符串为空,则必须返回空对象

到目前为止,我的功能如下:

function countStr(str) {
   myObject = {};
  if(str.length === 0) {
    return myObject;
  } else {
    myArray = str.split(' ');
    for(var i = 0; i < myArray; i++) {
      var key = myArray[i];
      if(myObject.hasOwnProperty(key)) {
        myObject[key]++;
      } else {
        myObject[key];
      }
    }
    return myObject;
  }
}

var output = countStr('ask me lots get me lots'); 
console.log(output); // --> IT MUST OUTPUT {ask: 1, me: 2, lots: 2, get: 1}
函数countStr(str){
myObject={};
如果(str.length==0){
返回myObject;
}否则{
myArray=str.split(“”);
对于(变量i=0;i它必须输出{ask:1,me:2,lots:2,get:1}

您能告诉我如何修复它吗?

您的代码有一些小问题

  • 您需要从零迭代到数组的
    长度
  • 您需要在
    else
    案例中用1初始化对象项
  • 您应该将局部变量与
    var
    一起使用,以避免污染顶级名称空间
  • 以下是固定版本:

    function countStr(str) {
      var myObject = {};
      if(str.length === 0) {
        return myObject;
      } else {
        var myArray = str.split(' ');
        for(var i = 0; i < myArray.length; i++) {
          var key = myArray[i];
          if(myObject.hasOwnProperty(key)) {
            myObject[key]++;
          } else {
            myObject[key] = 1;
          }
        }
        return myObject;
      }
    }
    
    var output = countStr('ask me lots get me lots');
    console.log(output);
    
    函数countStr(str){
    var myObject={};
    如果(str.length==0){
    返回myObject;
    }否则{
    var myArray=str.split(“”);
    对于(var i=0;i
    您的代码有一些小问题

  • 您需要从零迭代到数组的
    长度
  • 您需要在
    else
    案例中用1初始化对象项
  • 您应该将局部变量与
    var
    一起使用,以避免污染顶级名称空间
  • 以下是固定版本:

    function countStr(str) {
      var myObject = {};
      if(str.length === 0) {
        return myObject;
      } else {
        var myArray = str.split(' ');
        for(var i = 0; i < myArray.length; i++) {
          var key = myArray[i];
          if(myObject.hasOwnProperty(key)) {
            myObject[key]++;
          } else {
            myObject[key] = 1;
          }
        }
        return myObject;
      }
    }
    
    var output = countStr('ask me lots get me lots');
    console.log(output);
    
    函数countStr(str){
    var myObject={};
    如果(str.length==0){
    返回myObject;
    }否则{
    var myArray=str.split(“”);
    对于(var i=0;i
    您可以像这样使用
    数组#reduce()

    函数countStr(str){
    返回str.trim().length?str.split('').reduce((o,s)=>{
    o[s]=o[s]| | 0;
    o[s]++;
    返回o;
    }, {}) : {};
    }
    var output=COUNTSR(‘问我很多,给我很多’);
    console.log(输出);//-->{ask:1,me:2,lots:2,get:1}
    你可以像这样使用
    Array\reduce()

    函数countStr(str){
    返回str.trim().length?str.split('').reduce((o,s)=>{
    o[s]=o[s]| | 0;
    o[s]++;
    返回o;
    }, {}) : {};
    }
    var output=COUNTSR(‘问我很多,给我很多’);
    console.log(输出);//-->{问:1,我:2,抽签:2,得到:1}
    函数countStr(str){
    myObject={};
    var myArray=[];
    如果(str.length==0){
    返回myObject;
    }否则{
    myArray=str.split(“”);
    对于(var i=0;i
    
    函数countStr(str){
    myObject={};
    var myArray=[];
    如果(str.length==0){
    返回myObject;
    }否则{
    myArray=str.split(“”);
    对于(var i=0;i控制台日志(输出)myArray缺少长度
    myArray
    缺少长度
    myArray
    此外,您应该使用
    var
    重新标记
    myObject
    ,我刚刚添加了:顺便说一句,
    myArray
    声明也是错误的。
    var
    不是必需的,如果你想污染你的名称空间,这就是我写should的原因。@Weedoze:没有必要运行,但是将你的局部变量泄漏到全局范围是不好的代码。另外,您应该使用
    var
    重新标记
    myObject
    ,我刚刚添加了它。:)顺便说一句,
    myArray
    声明也是错误的。
    var
    不是必需的,如果你想污染你的名称空间,这就是我写should的原因。@Weedoze:没有必要运行,但是将你的局部变量泄漏到全局范围是不好的代码。