Javascript:为数组数据赋值

Posted

技术标签:

【中文标题】Javascript:为数组数据赋值【英文标题】:Javascript: assign value on arrays data 【发布时间】:2017-10-12 15:32:27 【问题描述】:

这是我的代码

function gotData(data)
        result = data.val() 
        const urls_kws = Object.keys(result)
                    .filter(key => result[key].last_res > 10)

        var keywords = urls_kws;

        console.log(urls_kws)

        for(var i=0;i<keywords.length;i++) 
        keywords[i] = keywords[i].replace(/-/gi, " " )
    


结果是

[ '7-skinfood-gold-caviar-collagen-cream',
  'beauty-credit']

但是当我将 console.log(urls_kws) 移到下面

function gotData(data)
        result = data.val() 
        const urls_kws = Object.keys(result)
                    .filter(key => result[key].last_res > 10)

        var keywords = urls_kws;

        for(var i=0;i<keywords.length;i++) 
        keywords[i] = keywords[i].replace(/-/gi, " " )
    

        console.log(urls_kws)

结果是

[ '7 skinfood gold caviar collagen cream',
  'beauty credit']

我的问题是如何保持urls_kws 的价值,因为我需要同时使用 var urls_kws(with -) 和 keywords(without -)

【问题讨论】:

【参考方案1】:

列表是 javascript 中的对象,对象的行为不同。当您这样做var keywords = urls_kws; 时,您实际上是在为内存中的对象创建另一个指针。

要复制一个对象,你可以使用这个符号:var objClone = JSON.parse(JSON.stringify(object));

function gotData(data)
    result = data.val() 
    const urls_kws = Object.keys(result)
                .filter(key => result[key].last_res > 10)

    var keywords =  JSON.parse(JSON.stringify(urls_kws));

    for(var i=0;i<keywords.length;i++) 
        keywords[i] = keywords[i].replace(/-/gi, " " );
    

    console.log(urls_kws);

【讨论】:

【参考方案2】:

替换

    var keywords = url_knows

与:

    var keywords = [];
    for(var i = 0; i < url_knows.length; i++)
        keywords.push(url_knows[i]);
    

【讨论】:

【参考方案3】:

urls_kws 值没有改变。您在函数外部进行控制台日志记录。所以它显示出不同的价值。

您可以在函数的最后一行检查控制台日志记录,它会保持不变。

如果您想在该函数之外访问相同的 urls_kws 值,请将变量设为全局变量。

使其成为全局变量:

window.variableName= variableName;

【讨论】:

【参考方案4】:

创建新数组而不是替换原始值。 例如

[ '7-skinfood-gold-caviar-collagen-cream','beauty-credit']
    .map(original => 
        return [ original, original.replace(/-/gi, " " )];
    );

【讨论】:

以上是关于Javascript:为数组数据赋值的主要内容,如果未能解决你的问题,请参考以下文章

javascript如何将数组赋值为空

将 PHP 转换为 JavaScript。将键/值存储到数组中

javascript中定义一维数组,如何从TXT文件中为其赋值?

js数组

JavaScript 数据类型面向对象编程

JS随笔