Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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 - Fatal编程技术网

Javascript 有没有一种干燥的方法可以做到这一点?

Javascript 有没有一种干燥的方法可以做到这一点?,javascript,Javascript,我有以下[被严重剪断的]代码: data = {}; data['someradio'] = '2'; for(key in data) { if(data.hasOwnProperty(key)) { if(key == 'someradio') { document.getElementById(key + '1').checked = data[key] == '1' ? true : false;

我有以下[被严重剪断的]代码:

data = {};
data['someradio'] = '2';

for(key in data)
{
    if(data.hasOwnProperty(key))
    {
        if(key == 'someradio')
        {
            document.getElementById(key + '1').checked = data[key] == '1' ? true : false;
            document.getElementById(key + '2').checked = data[key] == '2' ? true : false;
            document.getElementById(key + '3').checked = data[key] == '3' ? true : false;
        }
    }
}
是否有办法将3
文档。
行压缩为1

这一行实际上有12次(不是3次)重复出现,只改变了数字。

data={};
var counter = 13;

while ( --counter ) {
    document.getElementById(key + counter).checked = data[key] == counter;
}
数据['someradio']='2'; 用于(输入数据) { if(data.hasOwnProperty(key)) { 如果(键=='someradio') { 对于(var i=1;i
data={};
数据['someradio']='2';
用于(输入数据)
{
if(data.hasOwnProperty(key))
{
如果(键=='someradio')
{ 

对于(var i=1;i,这里有一种更便宜的方法:

data = {};
data['someradio'] = '2';

var key = 'someradio';
var p;
if (p = data[key]) {
    for(var i = 1; i < 4; i++) {
        document.getElementById(key + i).checked = (i == p);
    }
}
data={};
数据['someradio']='2';
var key='someradio';
var-p;
如果(p=数据[键]){
对于(变量i=1;i<4;i++){
document.getElementById(key+i).checked=(i==p);
}
}

这里有一种更便宜的方法:

data = {};
data['someradio'] = '2';

var key = 'someradio';
var p;
if (p = data[key]) {
    for(var i = 1; i < 4; i++) {
        document.getElementById(key + i).checked = (i == p);
    }
}
data={};
数据['someradio']='2';
var key='someradio';
var-p;
如果(p=数据[键]){
对于(变量i=1;i<4;i++){
document.getElementById(key+i).checked=(i==p);
}
}


当然。使用循环,并连接循环计数器,如
key+i
。此外,您可以通过在第一个
if
条件中使用
&&key='someradio'
来去除内部
if
,并且您可以缩短
。checked
赋值到
。checked=data[key]==i
if>(key=='someradio')
所以你在一个对象上迭代以找到一个特定的键?为什么不使用
数据。someradio
来代替呢?当x是布尔值时,用
x替换
true:false
。如果你只想布尔化一个表达式,请不要使用两次。
(3-3)
@amnotiam啊,当然!头脑一片空白…这就是我早上5点工作的结果!RE:使用
&&key='someradio'
,这实际上是一个更大的
开关的一部分
。缩短
作业的要点很好。选中了
作业;我以前从未尝试过这样做。@zerkms它实际上是mu的一部分。@zerkmsch较大的
开关
,对于大多数
s具有
默认
处理,但对于某些边缘情况,则具有
大小写
s;)当然。使用循环并连接循环计数器,如
key+i
。此外,在第一个
if
条件中使用
&&key=='someradio'
可以去掉内部
if
,并且可以缩短
.checked
赋值到
。checked=data[key]==i
if(key=='someradio'))
那么你是在一个对象上迭代来找到一个特定的键?为什么不使用
数据呢。someradio
代替呢?当x是布尔值时,用
x替换
true:false
。如果你只是想布尔化一个表达式,请不要使用两次。
(3-3)
@amnotiam啊,当然!头脑一片空白…这就是我早上5点工作的结果!RE:使用
&&key='someradio'
,这实际上是一个更大的
开关的一部分
。缩短
作业的要点很好。选中了
作业;我以前从未尝试过这样做。@zerkms它实际上是mu的一部分。@zerkmsch更大的
开关
,对于大多数
s具有
默认
处理,但对于某些边缘情况具有
大小写
s;)@Derek朕會功夫 - 第一次运行时,块内的
计数器
应该是11…如果要声明一个计数器变量并将其用作循环条件,最好使用for循环。@Derek朕會功夫 - 这有什么不同吗?@Dan,Blender-这只是个意见问题。我讨厌
循环。它们看起来很丑。@JosephSilber-对不起,不管我说什么……现在有点困了。@Derek朕會功夫 - 第一次运行时,块内的
计数器
应该是11…如果要声明一个计数器变量并将其用作循环条件,最好使用for循环。@Derek朕會功夫 - 那会有什么不同呢?@Dan,Blender-这只是一个意见问题。我讨厌
循环。它们看起来很难看。@JosephSilber-对不起,不管我说什么……现在有点困了。jQuery肯定没有内置
hasOwnProperty
。只使用迭代器加载jQuery会……很奇怪。@JosephSilber你是对的,我应该澄清一下我的意思-他似乎在使用它来确保属性是一个指定的属性,而不是一个内置属性。jQuery通过对象循环的方式免费为你提供了该功能。但这是毫无意义的,因为不必按照他的要求去做。jQuery绝对没有
hasOwnProperty
内置。加载jQuery只是为了使用迭代器会…很奇怪。@JosephSilber你是对的,我应该澄清一下我的意思-他似乎用它来确保属性是一个指定的属性,而不是一个内置属性。jQuery在对象中循环的方式让你免费获得该功能。但这没有任何意义,因为不需要做什么他在问。