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:为数组数据赋值的主要内容,如果未能解决你的问题,请参考以下文章
将 PHP 转换为 JavaScript。将键/值存储到数组中