提取对象的名称/值
Extracting name/value of an object
我是Javascript和Nodejs的新手,我正在使用express并调用链接
本地主机:7080/v1/电影/订单/通知/插入?品种=惠比特&年龄=10
然后尝试提取属性名称及其相应的值:
console.log(req.query.breed); //1
console.log(req.query.age); //2
for (var name in req.query) { //Extracting property and its value
console.log(name); //property name
console.log(req.query[name]); //3
console.log(req.query.name); //4
}
你能解释一下为什么 3 工作正常,而 4 给出的值为未定义吗?1 和 2 也工作正常。
JavaScript 对象通过字符串类型访问。当你使用.name
时,javascript 将其解释为 req.query 对象中的 "name" 键。
或者,当JavaScript使用[name]
时,使用与该变量关联的字符串值而不是变量名称本身。
一般经验法则:使用 JavaScript 变量查找对象值时,请始终使用括号表示法。 [name]
3 起作用的原因是因为:
for (var name in req.query) { //Extracting property and its value
console.log(req.query[name]); //3
}
这里的"name"是对req.query中"key"的引用。没有键"名称",所以当你说:req.query.name - 它出错,因为查询没有键"名称",但是当你迭代它的键时,ala...
for (var name in req.query)
这里的"名称"只是一个参考。当您迭代对象时,它会"保存"对键名称的引用。
例如,这样做:
var obj = {
age: 100,
year: 1980,
color: "blue"
}
for (var name in obj) {
console.log('KEY IS: ', name)
}
但是,您是否注意到"OBJ"没有键"名称"...因此,执行"obj.name"会出错。
我认为上述所有答案都是正确的,但举一个例子试图说明这一点:
var foo = [1, 2, 3, 4, 5];
console.log(foo);
for(i in foo)
console.log(i);
for(i in foo)
console.log(foo[i]);
for(i in foo)
console.log(foo.i);
这里的关键争论在于foo[i]和foo.i之间。foo[i] 中的"i"在迭代器循环中具有特殊含义。并且 i 的值等于迭代条目。因此,当我们运行对象时,在每次迭代中,"i"将保留条目,因此 foo[i] 有效。
foo.i 中的"i"在迭代器循环中没有特殊含义。"i"不被视为变量,而是被视为容器对象FOO的已知命名属性。foo.i 中的"i"和迭代器中的 i 是不同的。由于我们没有名为"i"的字段,因此会抛出错误。
希望这有帮助。
- 是否可以自动拉取“随机”;标签“;从一长串文本中提取
- 如何从数组中提取对象
- 提取API对Javascript中JSON对象响应的特定部分
- 如何将json文件中的数据提取到对象数组中,并在两个控制器之间共享
- 提取对象的名称/值
- 从包含表单的对象中提取值
- 如何从生成的JSON数组中提取JSON对象
- 在提取dom对象后,无法将每个名为tab的元素推送到数组中
- 使用javascript从对象中提取值
- 创建新的javascript数组,从对象属性中提取数据
- 如何从安卓发送的 json 对象中提取数据
- 试图解析一个大型JSON对象并提取数据,但不断出现意外的令牌错误
- 如何删除“;NULL”;使用Javascript从sails.js中的JSON对象中提取字符串
- 使用给定的URL和密钥将JSON对象提取到jQuery ajax中
- 将单个键从对象提取到数组
- 将单个对象提取为对象,而不是具有一个对象的数组,Javascript
- 仅通过 GET 请求拉取对象的某些部分
- 取对象中的对象的值
- 如何为javascript生成的DOM对象提取html代码
- 反应.js动态抓取对象,导致未定义