将项目返回到数组中
Returning an Item Back Into an Array
试图解决卷心菜、狼和山羊的问题。我的游戏计划是创建两个数组,一个代表河岸的左侧,另一个代表右侧。基本上,如果数组中的两个项目相互威胁,例如,如果左侧数组包含山羊和卷心菜,则不允许将狼移出。我已经设置了数组,但是当我调用函数来返回项目(卷心菜、狼、山羊)时,它不会将其放回左侧数组中。我正在使用 splice() 将项目添加回去。这是问题所在吗?这是我正在尝试做的:
function returnCabbage(){
$("#cabbage2").hide();
$("#cabbage").show();
leftBank.splice(0, 1, cabbage.name);
rightBank.splice(0, 1);
console.log(leftBank.length);
console.log(cabbage.name + " on left bank: " + isOnLeftBank(cabbage.name));
console.log(cabbage.name + " on right bank: " + isOnRightBank(cabbage.name));
}
function sendCabbage(){
$("#cabbage2").show();
$("#cabbage").hide();
leftBank.splice(0, 1);
rightBank.splice(0, 1, cabbage.name);
console.log(rightBank.length);
console.log(cabbage.name + " on left bank: " + isOnLeftBank(cabbage.name));
console.log(cabbage.name + " on right bank: " + isOnRightBank(cabbage.name));
}
这里有更多细节:https://jsfiddle.net/Amidi/m7vb3eoj/6/(图像不会加载,页面的格式也偏离了)。
当你拼接放置时,你正在替换数组中的一个元素。 当您拼接以删除时,您正在减少数组的长度。 相反,您可以使用 push 推送到阵列上。 问题是您的代码为每个元素假定一个特定的位置。 我会推荐一种稍微不同的方法。 以下是我推荐的更多内容。 我把检查失败状态等留给了你。
/* true for left false for right */
var river = {
cabbage: true,
wolf: true,
goat: true
}
function sendItem(name) {
river[name] = !river[name];
setState();
};
function setState() {
Object.keys(river).forEach(function(k) {
if (river[k] === true) {
$('.left .' + k).show();
$('.right .' + k).hide();
} else {
$('.left .' + k).hide();
$('.right .' + k).show();
}
});
}
setState();
.river,
.btn-group {
display: flex;
margin-left: auto;
margin-right: auto;
width: 50%;
flex-flow: row;
justify-content: space-between;
}
.left,
.right {
display: flex;
flex-flow: column;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="river">
<div class="left">
<div class="cabbage">Cabbage</div>
<div class="wolf">Wolf</div>
<div class="goat">Goat</div>
</div>
<div class="right">
<div class="cabbage">Cabbage</div>
<div class="wolf">Wolf</div>
<div class="goat">Goat</div>
</div>
</div>
<div class="btn-group">
<button type="button" onclick="sendItem('cabbage')">Send Cabbage</button>
<button type="button" onclick="sendItem('wolf')">Send Wolf</button>
<button type="button" onclick="sendItem('goat')">Send Goat</button>
</div>
相关文章:
- 对象数组返回自最近日期以来的最高总体值
- 从多维数组返回嵌套数组
- 为什么当我点击<a>使用纯javascript;这个“;返回url,数组返回“url”;未定义”;
- 带多维数组返回字符串的json_encode;阵列”;而不是数据
- 如何将 AJAX 响应作为 JavaScript 数组返回
- 我正在尝试在 JS 中制作这个随机名称生成器.数组返回未定义
- .push() 多个对象进入 JavaScript 数组返回 'undefined'
- 如何按属性从可观察数组返回项
- 通过jquery发送的关联php数组返回[对象对象]
- 从 Javascript 中的对象数组返回单个属性的数组
- 循环遍历对象数组返回“未定义”
- 拼接数组返回空的序列
- Javascript 多维数组返回第一个值,然后失败
- Json 数组返回空值
- 从下划线.js中的数组返回一系列值
- for 语句不从数组返回值
- MongoDB从数组返回特定字段
- 试图将数组返回到表中的列表中
- Javascript中的二维数组返回未定义的数组
- 将函数数组作为布尔值数组返回