在Java中,您可以使用for循环遍历数组中的对象,如下所示:
String[] myStringArray = {"Hello", "World"};
for (String s : myStringArray)
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
你能用JavaScript做同样的事吗?
如何遍历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) 我刚刚发现了chromestatus.com,在我失去了几个小时之后,发现了这个功能条目:
地图:地图对象是简单的键/值映射.
那让我困惑.常规的JavaScript对象是字典,所以Map与字典有什么不同?从概念上讲,它们是相同的(根据 地图和字典之间的区别是什么?)
文档chromestatus引用也没有帮助:
映射对象是键/值对的集合,其中键和值都可以是任意ECMAScript语言值.不同的键值只能出现在Map集合中的一个键/值对中.使用在创建Map时选择的比较算法区分不同的键值.
Map对象可以按插入顺序迭代其元素.必须使用散列表或其他机制来实现Map对象,这些机制平均提供对集合中元素数量的次线性访问时间.此Map对象规范中使用的数据结构仅用于描述Map对象所需的可观察语义.它不是一个可行的实施模型.
...对我来说仍然听起来像是一个对象,显然我错过了一些东西.
为什么JavaScript获得(受到良好支持的)Map对象?它有什么作用?
在MDN文档中:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
该for...of构造被描述为能够迭代"可迭代"对象.但有没有一种很好的方法来决定一个对象是否可迭代?
我试图找到数组,迭代器和生成器的公共属性,但一直无法这样做.
除了for ... of在try块中执行并检查类型错误之外,还有一种干净的方法吗?
我有一个简单的对象文字,其地址如下所示
address: {
country: String,
state: String,
city: String,
zip: String,
street: String
}
Run Code Online (Sandbox Code Playgroud)
它的内部是一个我用express.js渲染函数传递的对象.
在我的模板页面中,我正在尝试在此对象内循环,如下所示:
<% for (var prop in artist.address ) { %>
<%- artist.address[prop] %>
<% } %>
Run Code Online (Sandbox Code Playgroud)
它输出数据但包含ejs函数,如下所示:
function () { return this.get(path); } function () { return this.get(path); } yafo 09988 jerusalem israel israeli [object Object] undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined [object Object] [object Object] function () { var self = this , hookArgs // arguments …Run Code Online (Sandbox Code Playgroud) 我有一个类似于以下的数据结构:
var object = {
name: "a",
number: "1",
mission: ['a','b','c']
}
Run Code Online (Sandbox Code Playgroud)
现在我想将它们更新到数据库中,所以我需要遍历它们。
我试过:
object.forEach(function(value, key, map){
console.log('value: ' + value + ', key: ' + key + ', map:' + map);
});
Run Code Online (Sandbox Code Playgroud)
然后控制台报错:object.forEach is not a function
我是一个相对节点新手(老派程序员)
我有工作代码来获取结果集并解析行。我正在使用 felx 的 node-mysql 驱动程序。专门打印列并不难。
connection.query('SELECT * FROM Company', function(err, rows, fields) {
if (err) throw err;
for (var i = 0; i < rows.length; i++) {
result = "";
result = result + ('| ' + rows[i].name + ' | ' + rows[i].address_zip);
theEmail = theEmail + result + "<BR>";
}
Run Code Online (Sandbox Code Playgroud)
我真正想做的是循环遍历字段而不必命名它们......我的直觉告诉我这将是 rows[i].[j]......或类似的东西。
这可能吗?
如何使用forEach循环对象?
例如:
var dataset = {
"data" : {
"particles" : {},
"no2" : {},
"timestamp" : {}
}
};
Run Code Online (Sandbox Code Playgroud)
js:
dataset.data.forEach(function(field, index) {
console.log(field);
});
Run Code Online (Sandbox Code Playgroud)
错误:
未捕获的TypeError:dataset.data.forEach不是函数
有任何想法吗?
我正在努力寻找有关在我使用 Node.js 构建的函数触发器中使用从 firebase 中提取的地图的文档。每次我找到示例代码时,它都会使用我的 index.js 文件无法理解的函数。
数据库结构示例:
db.collection('users').doc('abc')
让 'abc' 保存一个名为 'uids' 的字段,该字段是一个 String、bool 的映射
我想在 Firebase 触发器函数中迭代“uids”map 以更新所有值为“false”的元素
我无法找出使用 index.js 中的地图进行任何操作/逻辑的适当方法。
这是我在网上找到的两个更连贯的片段:
db.collection('users').doc('abc').get().then((doc) => {
var uids = doc.data().uids;
//try 1
uids.forEach((value, key, map) => {
//do stuff
});
//try 2
for (var uid in uids) {
if (uid.val() == false)
//do stuff
}
});
Run Code Online (Sandbox Code Playgroud)
当搜索有关我的 index.js 代码的特定语法时,我是否错误地理解这是一个 Node.js 文件?我不明白为什么我要找到数十种方法来做同样的事情。似乎到处都张贴了完全随机的解决方案,但在我的文件中不起作用。
解决方案::感谢您的评论和回答以帮助解决此问题。我能够使用“Object.elemets(uids)”来投射 firebase 地图来提取键和值。
for (let [key, value] of Object.elements(uids)) {
//do stuff
}
Run Code Online (Sandbox Code Playgroud) javascript node.js google-cloud-functions google-cloud-firestore
在下面的 JavaScript 代码中,
obj = {};
// This work as intented
obj['a'] = { item1: 'a1', item2: 'a2' };
console.log(obj);
// Object.keys() works too
console.log(Object.keys(obj));
// forEach does not, why? and how to fix?
console.log('forEach');
obj.forEach(o => console.log(o));
Run Code Online (Sandbox Code Playgroud)
forEach 工作需要什么?
我很好奇,但谷歌没有帮助这个......
我们正在寻找一种使用对象键(它是一个包含函数的对象)的整洁方式,同时还可以清楚地访问键名.
var obj={'key1':'val1','key2':'val2','key3':'val3'};
Run Code Online (Sandbox Code Playgroud)
为了在循环中获得所需的键名,我们这样做:编辑:这是错误的!
for(var i=0;i<obj.length;i++){
console.log(Object.keys(obj)[i]);
}
Run Code Online (Sandbox Code Playgroud)
但是这种循环会有可能吗?
for(var k in obj){
//?
}
Run Code Online (Sandbox Code Playgroud)
在使用&&之前我已经看过组合循环.JavaScript是否能够将两者完美结合?
我没有破坏标准循环的最接近的是:
var i=0;
for(var k in obj){
console.log(Object.keys(obj)[i]);
i++;
}
Run Code Online (Sandbox Code Playgroud)
但它不是很优雅,不是很有创意,它更像是一种解决方法,因为'i'在循环之外声明.其他一切我们都尝试过错误.
javascript ×9
for-loop ×4
node.js ×3
arrays ×1
dictionary ×1
ecmascript-6 ×1
ejs ×1
express ×1
foreach ×1
json ×1
loops ×1
mysql ×1
object ×1