如何遍历JavaScript对象中的所有成员,包括作为对象的值.
例如,我怎么能循环这个(访问每个的"your_name"和"your_message")?
var validation_messages = {
"key_1": {
"your_name": "jimmy",
"your_msg": "hello world"
},
"key_2": {
"your_name": "billy",
"your_msg": "foo equals bar"
}
}
Run Code Online (Sandbox Code Playgroud) 我已经用Java编程了好几年了,但我刚刚回到学校获得正式学位.我很惊讶地发现,在我上一次任务中,我使用了如下所示的循环而丢失了分数.
do{
//get some input.
//if the input meets my conditions, break;
//Otherwise ask again.
} while(true)
Run Code Online (Sandbox Code Playgroud)
现在我的测试我只是扫描一些控制台输入,但我被告知这种循环是不鼓励的,因为使用break类似于goto,我们只是不这样做.
我完全理解goto和它的Java堂兄的陷阱break:label,我很有意识不使用它们.我也意识到一个更完整的程序会提供一些其他的逃避手段,例如刚刚结束程序,但这不是我教授引用的原因,所以......
怎么了do-while(true)?
我在StackOverflow中搜索并尝试其他建议.不幸的是,答案对我不起作用.他们建议使用'foreach'代替'for',但我怎么能......如果我想迭代50次?<
好吧,我只是粘贴代码,让我们看看一些好人可以帮助我.
JSLint无法完成.
出乎意料的'为'.for(var i = 1; i <= 50; i + = 1){
line 6 column 8意外的'var'.for(var i = 1; i <= 50; i + = 1){
line 6 column 13
"use strict";
var campo = [];
var ronda = 0;
// Llenamos el campo de 50 humanos/maquinas/extraterrestres = 150 jugadores
for (var i=1;i<=50;i+=1){
campo.push(new Human("h"+i));
campo.push(new Machine("m"+i));
campo.push(new Alien("e"+i));
}
// Array.prototype.suffle para barajar el Array
Array.prototype.shuffle = function() {
var input = this;
for (var …Run Code Online (Sandbox Code Playgroud) 为了更好地访问,我们需要第二组备用播放/暂停控制,并且(在用户Kento Nishi的帮助下)我们成功地从DEMO A(仅有1个音频播放控制)移动到DEMO B(具有重复的音频播放控制).
问题1在DEMO B中打破了持续时间(最右边的数字).
问题2每个网页都有自己的文件夹.有些页面已准备好语音音频文件,*.mp3但有些页面没有.如果在页面自己的文件中没有speak.mp3(所有页面的相同文件名),是否可以隐藏所有音频控件html?总结如果:如果当前网页文件夹中的服务器上存在*.mp3文件,<source src="*.mp3" type="audio/mpeg">则显示音频控件的html.否则通过CSS隐藏音频html控件.
旧版DEMO A,只有一组控件:
var play = document.getElementsByTagName('play')[0];
var pause = document.getElementsByTagName('pause')[0];
Run Code Online (Sandbox Code Playgroud)
新的DEMO B,具有多组控件:
document.getElementsByTagName("playpause")[0].addEventListener("click", playpause);
document.getElementsByTagName("playpause")[1].addEventListener("click", playpause);
Run Code Online (Sandbox Code Playgroud)
这里JS Lint显示错误:意外for和意外var,但我怀疑这些音频持续时间中断的原因.
BEAUTY关于演示A和B的好处是音频文件不会在用户点击播放之前(并且仅在其之后)加载.这样就不会浪费任何带宽,直到用户点击播放!此功能非常重要,应保持完整,以及布局方面的重复控件集,并且html部分应保持尽可能完整.
BOUNTY:200新演示工作除了持续时间/音频长度被打破,当音频文件不存在时,显示控件.赏金是对在工作的jsfiddle演示中解决问题(或两者)的一点感谢.感谢您的帮助.
这不是JSlint 的重复:意外的 'for' ,请不要将其标记为:
没有用于循环对象或对象文字的本机 for 循环(我知道有一个.forEachfor 数组)。
为什么 jslint 建议不要使用 for 循环?你如何遍历一个对象不具有Array.forEach()或Array.some()或类似的?
但更大更重要的问题是,为什么提出这个建议?
显然我可以使用Object.keys()然后,forEach()但这似乎是一种更长的方法。
源代码
// on a truthy match returns true and breaks from loop
Pub.someKey = function (obj, func, con) {
var key;
if (!Pub.isFunction(func)) {
return false;
}
for (key in obj) {
if (obj.hasOwnProperty(key)) {
if (func.call(con, obj[key], key, obj)) {
return true;
}
}
}
return false;
};
Pub.forSomeKey = Pub.someKey;
Run Code Online (Sandbox Code Playgroud) 我在JavaScript中有一个for循环,我已经通过JSLint运行了几次.在我收到的过去the unexpected++ error,我决定重构以使我的代码更具可读性.大约一个月后,JSLint推出了更新,现在正在显示警告......
语句位置中出现意外表达式"i".for(i; i <scope.formData.tabs.length; i = i + 1){
//See JSLint.com for why I pulled out i initialization and i = i+1 instead of i++
//and http://stackoverflow.com/questions/3000276/the-unexpected-error-in-jslint
var i = 0;
for (i; i < scope.formData.tabs.length; i += 1) {
scope.formData.tabs[i].show = false; // hide all the other tabs
if (scope.formData.tabs[i].title === title) {
scope.formData.tabs[i].show = true; // show the new tab
}
}
Run Code Online (Sandbox Code Playgroud)
恢复var i = 0并且i++没有改进警告,JSLint只是停止处理.
javascript ×5
jslint ×4
arrays ×1
audio ×1
do-while ×1
for-loop ×1
html5 ×1
java ×1
mp3 ×1
while-loop ×1