我正在尝试将数据推送到对象中,但只要将数据推送到userID.name
,userID.age
的值就会在控制台中重置(?)。这是我的代码:
if (input.indexOf("ben") >= 0){
var slot = splitInput.indexOf("ben");
console.log(slot)
i = slot + 1;
if (splitInput[i].indexOf(0) >= 0 || splitInput[i].indexOf(1) >= 0 || splitInput[i].indexOf(3) >= 0 || splitInput[i].indexOf(4) >= 0 || splitInput[i].indexOf(4) >= 0 || splitInput[i].indexOf(5) >= 0 || splitInput[i].indexOf(6) >= 0 || splitInput[i].indexOf(7) >= 0 || splitInput[i].indexOf(8) >= 0 || splitInput[i].indexOf(9) >= 0){
i = 0;
var slot = splitInput.indexOf("ben");
// console.log(slot)
i = slot + 1;
userID.age = splitInput[i];
console.log(userID);
} if (splitInput[i].indexOf("a") >= 0 || splitInput[i].indexOf("e") >= 0 || splitInput[i].indexOf("i") >= 0 || splitInput[i].indexOf("u") >= 0){
i = 0;
var slot = splitInput.indexOf("ben");
// console.log(slot)
i = slot + 1;
userID.name = splitInput[i];
console.log(userID);
}
}
这是我的splitInput
:
var splitInput = input.split(" ");
输入是通过getElementById
函数收集的。
当我手动记录userID
时,我收到此错误VM935:1 Uncaught ReferenceError: userID is not defined(…)
可能与此有关,尽管console.log(userID)
工作正常。
如果您需要更多信息,请告诉我们。
提前致谢!
答案 0 :(得分:0)
在分配对象属性(例如UserID.age
)之前,您必须先定义UserID
本身。
因此,在访问UserID
:
var userID = {};
用元音检查数字和单词的方式并不是那么好。它有很多重复的代码。同样在if
块内,您再次搜索单词" ben",而您已经完成了...似乎没有必要再次这样做了。
查看此版本的代码:
// Sample data
var input = 'ik ben 51 jaar';
var splitInput = input.split(" ");
// This was missing:
var userID = {};
// Move retrieval of slot before the `if` so it can be reused
var slot = splitInput.indexOf("ben");
if (slot >= 0){
console.log('slot:', slot);
i = slot + 1;
// Make sure you are not at the end of the array, and
// use a regular expression to see next word consists of digits only
if (i < splitInput.length && splitInput[i].match(/^\d+$/)){
// convert the word to number with unitary plus:
userID.age = +splitInput[i];
}
// You'll maybe want to do an else here.
// Use regular expression again; don't forget the "o"
else if (i < splitInput.length && splitInput[i].match(/a|e|i|o|u/)){
userID.name = splitInput[i];
}
console.log(userID);
}
&#13;