Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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_Arrays_Iteration - Fatal编程技术网

Javascript “的价值”;“关键点”是:&引用;“价值”;物体计数错误

Javascript “的价值”;“关键点”是:&引用;“价值”;物体计数错误,javascript,arrays,iteration,Javascript,Arrays,Iteration,我有一个句子数组: term = ["This is some string","This is another string"]; 我希望能够将其按单个单词进行拆分,并计算整个术语数组中每个单词出现的次数 简而言之,我想要: ["This is some string", "This is another string"]; var wordsArray{}; var term = ["This is some string", "This is another string"];

我有一个句子数组:

term = ["This is some string","This is another string"]; 
我希望能够将其按单个单词进行拆分,并计算整个
术语
数组中每个单词出现的次数

简而言之,我想要:

["This is some string", "This is another string"];
var wordsArray{};
var term = ["This is some string", "This is another string"];
    for (var x = 0; x < term.length; x++){
        var splitted = term.split([" "]);
        for (var i = 0; i < splitted.length; i++) { //i = each splitted string(each word)
            var count = 1;
            if (splitted[i] in wordsArray){
                //Add one to key value in wordarray
                wordsArray[splitted[i]]++;                       
            } else {
                wordsArray[splitted[i]] = count;
            }                    
        }
    }
最终成为:

{
    This : 2
    is : 2
    some : 1
    another : 1
    string : 2
}               //(they would be in alphabetic order)

我正在通过

  • term.split([“”])将每个术语数组句子拆分为
    言下之意
  • 将这些单词中的每一个添加到对象(或可以称为“关联数组”的对象)
  • 测试单词是否已在对象中,如果已在,则增加其值,否则将其添加到值为1的对象中
  • 通过测试下面的代码,这似乎在大多数情况下都能正常工作,但是对于某些单词,最终计数不正确(但是我没有收到任何错误!)。
    下面的代码没有正确输出计数有什么特殊原因吗

    代码:

    ["This is some string", "This is another string"];
    
    var wordsArray{};
    var term = ["This is some string", "This is another string"];
        for (var x = 0; x < term.length; x++){
            var splitted = term.split([" "]);
            for (var i = 0; i < splitted.length; i++) { //i = each splitted string(each word)
                var count = 1;
                if (splitted[i] in wordsArray){
                    //Add one to key value in wordarray
                    wordsArray[splitted[i]]++;                       
                } else {
                    wordsArray[splitted[i]] = count;
                }                    
            }
        }
    
    var-wordsArray{};
    var term=[“这是一个字符串”,“这是另一个字符串”];
    对于(变量x=0;x
    我将我的过程简单地放在上面,但作为进一步的背景,每个初始句子字符串都来自大量迭代的json文件,并且这个单词映射包括alljson文件的all句子。(我没有在这里包含此代码,因为我认为它对问题没有任何影响。)

    这会对计数结果产生明显影响吗

    您需要对术语中的每个元素应用拆分。换行

        var splitted = term.split([" "]);
    

    所以整个事情看起来像

    var-wordsArray={};
    var term=[“这是一个字符串”,“这是另一个字符串”];
    对于(变量x=0;xlog(wordsArray)
    一个jQuery方法如下所示

    var wordsArray = {};
    var term = ["This is some string", "This is another string"];
    
    $.each(term, function (index, value) {
        var split = value.split(" ");
    
        $.each(split, function (i, v) {
           wordsArray[v] = v.length; 
        });
    });
    
    console.log(wordsArray);
    
    这是一个独特的单词数组,关键字是单词,值是计数

    输出示例:

    Object {This: 4, is: 2, some: 4, string: 6, another: 7}
    

    正如其他人提到的,您的示例代码是错误的:第4行应该是

    var splitted = term[x].split([" "]); // term[x]
    
    <>词条错误的原因可能是,你似乎只把空间看作定界符。

    • 其他字符如点、逗号、制表符、换行符呢
    • 大多数情况下,“this”和“this”是分开的词(区分大小写!)
    例如:

    var term = ["This is some string.", "this is \"another\" string?"];
    
    产生

    "another": 1
    this: 1
    This: 1
    is: 2
    some: 1
    string.: 1
    string?: 1
    

    您能否提供一个“失败”字符串的示例,并描述所需的输出与生成的输出?为什么使用
    拆分([“”])
    <代码>[“”]
    被字符串化为
    “”
    。所以只需使用
    split(“”
    )即可。请注意{}
    中的
    “toString”是正确的。。。您应该使用
    Object.create(null)
    来创建单词。在控制台中抛出的代码中有一些明显的错误?找到了问题。添加到
    wordlist
    的方法在错误的循环中,它只为1个json文件完成此操作,而不是全部。明显的错误。。。我想该睡觉了。我马上删除这个问题。