javascript - 找到匹配项时循环遍历 JSON 对象并更新值的正确方法是什么
问题描述
我能够遍历我的 JSON 对象值并找到我正在寻找的字符串,但我不确定在修改后如何设置新值。我可能采用了错误的方法,但可以使用一些反馈来说明它是如何工作的以及应该采用什么合适的方法。
this.specVars = {
rgba_000000 : "rgba(0, 0, 0, 1)", //Black
rgba_222222 : "rgba(34, 34, 34, 1)", //Dark gray
rgba_2ba6cb : "rgba(43, 166, 203, 1)",
rgba_336699 : "rgba(51, 102, 153, 1)", //Blue hyperlink
rgba_ffffff : "rgba(255, 255, 255, 1)", //White
};
// 测试正在使用的浏览器,并在使用 firefox 时从颜色值中删除 alpha(opacity) 值
// 将对象中的值转换为数组,用于解析每个值
var colors = this.specVars;
var values = Object.values(colors);
for (var value of values){
if(value.includes(', 1)')){
value = value.replace(', 1)', ')');
value = value.replace('rgba', 'rgb');
//How do i set the value in the actual object??
console.log(value);
};
}
解决方案
您可以像这样简单地更改任何索引处的值
this.specVars['rgba_000000'] = 10;
在你的情况下
this.specVars = {
rgba_000000 : "rgba(0, 0, 0, 1)", //Black
rgba_222222 : "rgba(34, 34, 34, 1)", //Dark gray
rgba_2ba6cb : "rgba(43, 166, 203, 1)",
rgba_336699 : "rgba(51, 102, 153, 1)", //Blue hyperlink
rgba_ffffff : "rgba(255, 255, 255, 1)", //White
};
var colors = this.specVars;
var values = Object.values(colors);
for (var value of values){
if(value.includes(', 34')){
values[values.indexOf(value)] = 10;
}
}
console.log(values);
或者
var keys = Object.keys(colors);
var values = Object.values(colors);
for (var value of values){
if(value.includes(', 34')){
this.specVars[keys[values.indexOf(value)]] = 10;
}
}
推荐阅读
- swiftui - SwiftUI NavigationView 布局问题
- django - Django - 当覆盖模型的 save() 函数时, super() 是否应该接受任何参数?
- c - 将 int 中的最后 10 位向左旋转
- javascript - 不要打破跨度,只打破一个空白
- css-animations - TailwindUI 过渡和变换
- python - Python将字符串部分连接到带有分隔符的列表中
- visual-studio-code - 禁用 VSCode 计数跳过 python 测试作为问题?
- reactjs - AWS Amplify 托管的 React App url 重定向很棘手
- c# - c# webclient下载图片失败
- phpstorm - PhpStorm:具有共同核心的多个项目