如何绕过.push不是javascript中的函数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何绕过.push不是javascript中的函数?相关的知识,希望对你有一定的参考价值。
我需要堆叠二进制文件。需要使用无原型。使用此代码时,我收到的错误是remStack.push不是函数。我在这里错过了什么?
function Stack() {}
function divideBy2(decNumber) {
var remStack = new Stack(),
rem,
binaryString = '';
while (decNumber > 0) {
rem = Math.floor(decNumber % 2);
remStack.push(rem);
decNumber = Math.floor(decNumber / 2)
}
while (!remStack.isEmpty()) { //{5}
binaryString += remStack.pop().toString();
}
return binaryString;
}
console.log(divideBy2(233));
答案
正如其他人所指出的,你的Stack
类没有push
,pop
,isEmpty
函数。
以下是我将如何做到这一点(不使用任何外部库并使用JS Array实现Stack类)。
function Stack() {
this.myStack = [];
this.push = function(val) {
this.myStack[this.myStack.length] = val;
};
this.isEmpty = function() {
return this.myStack.length <= 0;
};
this.pop = function() {
return this.myStack.splice(this.myStack.length - 1, 1)[0];
};
}
function divideBy2(decNumber) {
var remStack = new Stack(), rem, binaryString = '';
while (decNumber > 0) {
rem = Math.floor(decNumber % 2);
remStack.push(rem);
decNumber = Math.floor(decNumber / 2)
}
while (!remStack.isEmpty()) { //{5}
binaryString += remStack.pop().toString();
}
return binaryString;
}
console.log(divideBy2(233));
另一答案
稍作修改即可。
function Stack() {}
function divideBy2(decNumber) {
var remStack = []//new Stack(),
var rem,
binaryString = '';
while (decNumber > 0) {
rem = Math.floor(decNumber % 2);
remStack.push(rem);
decNumber = Math.floor(decNumber / 2)
}
while (!remStack.length == 0) { //{5}
binaryString += remStack.pop().toString();
}
return binaryString;
}
console.log(divideBy2(233));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
另一答案
在这里,我发现了一些错误。
- 你必须从Stack函数返回数组。其实你我需要有功能而不是对象。使用new运算符,您正在使用Stack的实例。在这里,在Stack Object中我已经创建了一个数组变量;
- 在数组中,你不能有空函数。你需要计算它的价值。在这里,我做了<1条件 function Stack(){var myarray = [];返回myarray; function divBy2(decNumber){var remStack = Stack(),rem,binaryString =''; while(decNumber> 0){rem = Math.floor(decNumber%2); remStack.push(REM); decNumber = Math.floor(decNumber / 2)} while(!remStack.length <1){// {5} binaryString + = remStack.pop()。toString(); } return binaryString; } console.log(divideBy2(233));
以上是关于如何绕过.push不是javascript中的函数?的主要内容,如果未能解决你的问题,请参考以下文章
"push" 不是函数 [在 getElementsByTagName 返回的元素上]
如何编写递归函数javascript push我的数组属性Json对象?