如何在不保存到其他变量的情况下更改JavaScript中的值
How to change value in JavaScript without saving into another variable
下面是我的代码,其中我对对象的一些字符串进行了大写,现在当我在下面控制台时,它看起来像是只在for循环中应用的方法的范围(在本例中为toUpperCase)。我知道我可以通过将结果存储/推送到另一个数组/对象中来实现结果,但我想知道JS中是否有任何可用的方法/技术,该方法可以直接应用于原始变量并直接更改其值?
代码-
var odr = {
testkey1: "a test",
testkey2: {
"name": "harris",
"city": "New York",
"addr": "107 Suite"
},
testkey3: "b test",
};
if(odr.testkey2 !== undefined) {
for(var key in odr.testkey2) {
if(odr.testkey2.hasOwnProperty(key)){
if(typeof odr.testkey2[key] == 'string') {
console.log(odr.testkey2[key].toUpperCase());
}
}
}
}
console.log(odr.testkey2);
结果-
Object {name: "harris", city: "New York", addr: "107 Suite"}
工作Fiddle-http://jsfiddle.net/o6d45en6/
我可能误解了你的要求。但是String.toUpperCase()不是bang方法,它只是通过调用该方法来更新其值。因此,如果你想更新值,你需要替换。
if(odr.testkey2 !== undefined) {
for(var key in odr.testkey2) {
if(odr.testkey2.hasOwnProperty(key)){
if(typeof odr.testkey2[key] == 'string') {
odr.testkey2[key] = odr.testkey2[key].toUpperCase();
}
}
}
}
仅供参考,在javascript中,当你替换对象时,对象总是传递它的引用。这意味着你不能做这个
var copiedObject = odr;
if(copiedObject.testkey2 !== undefined) {
for(var key in copiedObject.testkey2) {
if(copiedObject.testkey2.hasOwnProperty(key)){
if(typeof copiedObject.testkey2[key] == 'string') {
copiedObject.testkey2[key] = copiedObject.testkey2[key].toUpperCase();
}
}
}
}
console.log(odr); // -> odr object has also changed. because copiedObject is just a reference of odr.
为了避免这种情况,您需要deep copy
对象。
var copiedObject = JSON.parse(JSON.stringify(odr));
或
var copiedObject = jQuery.extend({}, odr);
相关文章:
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- 如何在不单击javascript中的按钮的情况下触发事件
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 无法't在不使用Javascript刷新页面的情况下多次将值传递给文本框
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 如何在没有ajax的情况下将javascript动态数据发送到php变量
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 如何在不知道关键字的情况下访问javascript对象值
- 为什么在这种情况下,“This”确实充当javascript函数中的私有成员
- 如何在不保存到其他变量的情况下更改JavaScript中的值
- 在不使用PHP的情况下将表单输入值获取到Javascript中
- 如何在不预定义的情况下将javascript函数传递到另一个函数中
- 在给定 javascript 中的表头的情况下生成 TSV 文件
- 如何在不退出javascript的情况下从javascript更新网页
- 我可以在不使用乘法运算符“”的情况下进行乘法运算吗*"在JavaScript中
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- Haxe Javascript:在不使用Reflect的情况下按名称获取和设置属性
- 在不使用javascript的情况下,可以在表单字段中设置文本占位符(以提示最终用户插入特定格式)
- 为什么下面的按钮切换情况下javascript工作