如何改变对象的值.我在谷歌应用程序脚本环境编码



假设公寓有4扇窗户

有以下数组

var windowAction= [
["1. open", "1. close"],
["2. open", "2. close"],
["3. open", "3. close"],  
["4. open", "4. close"],
];


最初,所有的窗口都是打开的。我把它写成如下对象

的形式
var window= {
"window":[
[{"action": windowAction[0][0]}],
[{"action": windowAction[1][0]}],
[{"action": windowAction[2][0]}],
[{"action": windowAction[3][0]}]
]
};

关闭1号窗口后,需要将对象更改为

var window= {
"window":[
[{"action": windowAction[0][1]}],
[{"action": windowAction[1][0]}],
[{"action": windowAction[2][0]}],
[{"action": windowAction[3][0]}]
]
};

,如果我们关闭第三个窗口,将会有

var window= {
"window":[
[{"action": windowAction[0][1]}],
[{"action": windowAction[1][0]}],
[{"action": windowAction[2][1]}],
[{"action": windowAction[3][0]}]
]
};

,反之亦然如果我们打开第一个窗口,它将是

var window= {
"window":[
[{"action": windowAction[0][0]}],
[{"action": windowAction[1][0]}],
[{"action": windowAction[2][1]}],
[{"action": windowAction[3][0]}]
]
};

请告诉我怎样才能改变它。

我试着用一个开关箱来写,但是在写的过程中我意识到这是行不通的。

我需要它以对象的形式出现

提前谢谢你

这是我的尝试:

function checker(windowObj, userInput){    
for (var i = 0; i < 4; i++){
if (windowAction[i][0] == userInput){
windowObj[i] = windowAction[i][1];          
}
else {
windowObj[i] = windowAction[i][0];
}
}
}
var windowAction = [
["1. open", "1. close"],
["2. open", "2. close"],
["3. open", "3. close"],  
["4. open", "4. close"]
];

var windowObj = [
windowAction[0][0],
windowAction[1][0],
windowAction[2][0],
windowAction[3][0]
];


var userInput = "1. open";

checker(windowObj, userInput);  
print(windowObj);

userInput = "2. open";
checker(windowObj, userInput);  
print(windowObj);

userInput = "1. close";
checker(windowObj, userInput);  
print(windowObj);

输出应该是:

1. close,2. open,3. open,4. open
1. close,2. close,3. open,4. open
1. open,2. close,3. open,4. open

请不要调用变量window,这是JS中的保留字。

如果我理解正确的话,你需要一种方法来改变对象特定属性的值吗?

windowobj.window[0][0].action=windowAction[0][1]

你可以很容易地根据你的索引定位特定的。

var windowAction = [
["1. open", "1. close"],
["2. open", "2. close"],
["3. open", "3. close"],
["4. open", "4. close"],
];
var windowobj = {
"window": [
[{
"action": windowAction[0][0]
}],
[{
"action": windowAction[1][0]
}],
[{
"action": windowAction[2][0]
}],
[{
"action": windowAction[3][0]
}]
]
};
console.log(windowobj.window[0][0].action)
windowobj.window[0][0].action=windowAction[0][1]
console.log(windowobj.window[0][0].action)
console.log(windowobj.window)

编辑:

如果你需要自动更改,那么你需要构造不同的数组/对象:

将您的windowAction定义为对象而不是数组,其中您将拥有返回打开或关闭状态的函数:

1:function() { x = ["1. open", "1. close"]; return x[1]},

return这里是你要用它做什么。return x[1]为关闭,返回x[0]为打开

然后在windowobj对象端调用该函数来获取当前值。

"action": windowAction[1]()

这样你就可以通过将0更改为1来打开关闭windowAction,反之亦然,windowobj总是更新的。

var windowAction = {
1:function() { x = ["1. open", "1. close"]; return x[1]},
2:function() { x = ["2. open", "2. close"]; return x[0]},
3:function() { x = ["3. open", "3. close"]; return x[0]},
4:function() { x = ["4. open", "4. close"]; return x[0]}
};
console.log(windowAction[1]())

var windowobj = {
"window": [
[{
"action": windowAction[1]()
}],
[{
"action": windowAction[2]()
}],
[{
"action": windowAction[3]()
}],
[{
"action": windowAction[4]()
}]
]
};
console.log(windowobj.window[0])

EDIT2:

document.querySelector("select").onchange = function (event) {
let res = event.target.value.split(". ")
setValue(res[0], res[1])
};
var windowAction
let saveState=[[,],[,],[,],[,]];
function setValue(num, state){
saveState[num-1][0]=num
saveState[num-1][1]=state
//console.log(saveState)
windowAction = {
1:function() {if(saveState[0][1] === "close" && saveState[0][0] ==1){x="1. close"}else{x="1. open"}; return x},
2:function() {if(saveState[1][1] === "close" && saveState[1][0] ==2){x="2. close"}else{x="2. open"}; return x},
3:function() {if(saveState[2][1] === "close" && saveState[2][0] ==3){x="3. close"}else{x="3. open"}; return x},
4:function() {if(saveState[3][1] === "close" && saveState[3][0] ==4){x="4. close"}else{x="4. open"}; return x},
};
//console.log(saveState1)
//windowAction[num](state)

var windowobj = {
"window": [
[{
"action": windowAction[1]()
}],
[{
"action": windowAction[2]()
}],
[{
"action": windowAction[3]()
}],
[{
"action": windowAction[4]()
}]
]
};
console.clear()
//console.log(windowobj.window[num-1])
console.log(windowobj.window)
}
.as-console-wrapper{
min-height: 70%}
<select>
<option disabled selected>...</option>
<option>1. open</option>
<option>1. close</option>
<option>2. open</option>
<option>2. close</option>
<option>3. open</option>
<option>3. close</option>
<option>4. open</option>
<option>4. close</option>
</select>

相关内容

最新更新