如何将数组结果视为数组Javascript
How to treat array result as array Javascript?
我想循环我的数组结果作为数组,因为我使用嵌套循环。这是我的代码
var isp = ["yahoo", "gmail"];
var yahoo = ["@yahoo.com", "@rocketmail.com", "@ymail.com"];
var gmail = ["@gmail.com"];
for(x=0;x<isp.length;x++){
//Should alert 3 Because var yahoo contains 3 element
//Should alert 1 because var gmail is contain 1 element
alert(isp[x].length);
for(y=0;y<isp[x].length;y++){
//Should alert @yahoo.com, @rocketmail.com and so on
alert(isp[x][y]);
}
}
这是我的JSFiddle https://jsfiddle.net/4v272ghL/1/
试试这个:
https://jsfiddle.net/4v272ghL/2/var isp = ["yahoo", "gmail"];
var providers = {
'yahoo': ["@yahoo.com", "@rocketmail.com", "@ymail.com"],
'gmail': ["@gmail.com"]
};
isp.forEach(function(v, i) {
console.log(v);
providers[v].forEach(function(domain, index) {
console.log(domain);
});
});
你正在使用JS对象来保存域数组。使用它,您可以动态访问每个提供商的数据。
也许你不需要那么多数组?让我们用一个对象来代替。
var isps = {
yahoo: ["@yahoo.com", "@rocketmail.com", "@ymail.com"],
gmail: ["@gmail.com"]
};
for(isp in isps) {
var providers = isps[isp];
document.write(isp + " has " + providers.length + " provider(s):<br/>");
providers.forEach(function(domain) {
document.write(domain + "<br/>");
});
};
这之所以有效,是因为您可以简单地循环遍历对象的键(与第一个数组相同)并使用它来访问该对象的值(与之前的其他变量相同),而不是遍历数组并尝试访问具有相同名称的不同变量。
请注意,我已经将您的alert
更改为在运行代码片段时将提供更多信息的东西。当然,一旦您获得了isp
, providers
和domain
这些值,您就可以对它们做任何您喜欢的事情-您不需要document.write
它们。
这个方法有几个好处。例如,由于我们只是人类,如果发生这种情况怎么办:
var isp = ["yahoo"];
var yahooo = ["@yahoo.com"];
依赖于isp
中的值和变量名完全相同。像上面这样一个简单的错误("yahoo "而不是"yahoo")会阻止代码工作,如果你不知道你在找什么,像这样一个字母的错误可能很难发现。
如果您要经常回来添加或修改这些值,这可能会成为一个问题。使用对象模式,它更干净,更独立。
这个解决方案的一个潜在问题是,如果这些提供者循环的顺序很重要(例如,如果你总是需要在"gmail"之前输出"yahoo")。目前JavaScript对对象的表述如下:"它是一个无序的属性集合"。这可能会在ES6中发生变化(我们目前在ES5上)。在这里阅读更多关于这个特殊问题的信息:JavaScript保证对象属性顺序吗?
您需要对isp[x]进行求值以获得其他两个数组的名称。例如:
var isp = ["yahoo", "gmail"];
var yahoo = ["@yahoo.com", "@rocketmail.com", "@ymail.com"];
var gmail = ["@gmail.com"];
for(x=0;x<isp.length;x++){
//Should alert 3 Because var yahoo contains 3 element
//Should alert 1 because var gmail is contain 1 element
alert(isp[x].length);
for(y=0;y<eval(isp[x]).length;y++){
//Should alert @yahoo.com, @rocketmail.com and so on
alert(eval(isp[x])[y]);
}
}
这很清楚,我猜对吧?: D
var ispAndData = [
["yahoo", ["@yahoo.com", "@rocketmail.com", "@ymail.com"]],
["gmail", ["@gmail.com"]]
];
for (x = 0; x < ispAndData.length; x++) {
//Should alert 3 Because var yahoo contains 3 element
//Should alert 1 because var gmail is contain 1 element
document.write(ispAndData[x][0] + " -> ");
document.write(ispAndData[x][1].length + "</br>");
for (y = 0; y < ispAndData[x][1].length; y++) {
//Should alert @yahoo.com, @rocketmail.com and so on
document.write(ispAndData[x][1][y] + "</br>");
}
document.write("</br>");
}
- 如何遍历包含对象的数组-javascript
- 保存数组javascript
- 查找数组javascript中包含的元素类型
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 从多维数组javascript中提取特定值
- 如何在数组javascript中选择伪随机值
- 拆分字符串数组(JavaScript)后未定义
- 从数组JavaScript中删除并返回最后n个项的最快方法
- 使用条件for循环更新数组-Javascript
- 从数组javascript创建新对象
- 用数组(javascript)中的值替换regex捕获
- 从数组[Javascript]的总长度中减去一个干净的数字
- 将一个字符串数组解析为一个新的数组javascript
- 如何将对象转换为对象数组javascript
- 赢得't循环数组javascript
- 从不同的数组 JavaScript 中获取值
- 多维数组 JAVASCRIPT 出了点问题
- 可以't分配给一个对象数组javascript
- 比较数组JavaScript中的对象
- 如何完成缺少(连续)元素的数组|Javascript