
[英]setting data property of a jquery ajax method to contain a javascript object with an array property
[英]Setting Object Data Structure Array Property
经过详尽的搜索,我还没有找到一个明确的答案来解决我的问题。 这可能部分是由于对javascript术语的不正确或不精确的引用,因为面向对象的编程对我来说是新的。
var numArray = [0.123456789, 31.415, 314.15, -314.15, 0.0, 0, 1, 10, 100];
var AlignDecimal = function(NumberArray){
var numberStructure = [{
value:0,
toString:"",
decimalIndex:-1,
integer:"",
integerLength:-1,
mantissa:"",
mantissaLength:-1,
sign:""
}];
for (var i = 0; i < NumberArray.length; i++){
numberStructure[i].value = NumberArray[i];
println(numberStructure[i].value);
}
};
AlignDecimal(numArray);
我希望从上面可以看出,有足够的信息来确定我的最终编程目标。
最初我试过:
numberStructure.value = NumberArray
这部分工作,除了.value已成为一个数组,而不是numberStructure []。值。
然后我尝试了:
numberStructure = NumberArray
现在numberStructure []数组收到了NumberArray [],但很明显,numberStructure []。值未定义。
还尝试过:
for (var i = 0; i < NumberArray.length; i++){
numberStructure[i].value.push(NumberArray[i]);
println(numberStructure[i].value);
}
那也行不通。
您是否尝试获取一组numberStructure对象,numArray中的每个数字对应一个? 如果是这样,这是一种方法:
var numArray = [0.123456789, 31.415, 314.15, -314.15, 0.0, 0, 1, 10, 100]; var AlignDecimal = function(NumberArray){ function numberStructure(){ this.value = 0; this.toString = ""; this.decimalIndex = -1; this.integer = ""; this.integerLength = -1; this.mantissa = ""; this.mantissaLength = -1; this.sign = ""; }; var numberStructureArray = []; for (var i = 0; i < NumberArray.length; i++){ var numStruct = new numberStructure(); numStruct.value = NumberArray[i]; numberStructureArray.push(numStruct); document.writeln(numberStructureArray[i].value + '<br/>'); } }; AlignDecimal(numArray);
你也可以这样做:
var numArray = [0.123456789, 31.415, 314.15, -314.15, 0.0, 0, 1, 10, 100]; var AlignDecimal = function(NumberArray){ var numberStructureArray = []; for (var i = 0; i < NumberArray.length; i++){ numberStructureArray.push({ value:NumberArray[i], toString:"", decimalIndex:-1, integer:"", integerLength:-1, mantissa:"", mantissaLength:-1, sign:"" }); document.writeln(numberStructureArray[i].value + '<br/>'); } }; AlignDecimal(numArray);
你需要尝试这样的事情:
var numArray = [0.123456789, 31.415, 314.15, -314.15, 0.0, 0, 1, 10, 100]; var numberStructureObj=[]; var AlignDecimal = function(NumberArray){ var numStruct=[]; for (var i = 0; i < NumberArray.length; i++){ var numberStructure = {// create a new object every time then assign the value value:0, toString:"", decimalIndex:-1, integer:"", integerLength:-1, mantissa:"", mantissaLength:-1, sign:"" }; numberStructure.value=NumberArray[i]; numberStructureObj.push(numberStructure); } console.log(numberStructureObj);// object with assigned values and rest of the fields. document.writeln(JSON.stringify(numberStructureObj));// see objects in string format }; AlignDecimal(numArray);
在用adam0101的例子进行黑客攻击之后,我决定试试这个“snipet”功能......
var numArray = [0.123456789, 31.415, 314.15, -314.15, 0.0, 0, 1, 10, 100, 10000, -1000]; var AlignDecimal = function(NumberArray, DecimalPlaces){ var integerLengthMax = -1; var mantissaLengthMax = -1; var numberStructure = function(){ this.value = 0; this.valueAbs = 0; this.toString = ""; this.decimalIndex = -1; this.integer = ""; this.integerLength = -1; this.mantissa = ""; this.mantissaLength = -1; this.sign = ""; this.formattedResult = ""; };// end numberStructure var numberStructureArray = []; for (var i = 0; i < NumberArray.length; i++){ var numStruct = new numberStructure(); if(NumberArray[i] < 0){ numStruct.sign = "-"; }else if(NumberArray[i] > 0){ numStruct.sign = " "; // make optional for + }else{ numStruct.sign = " "; }// end if(NumberArray[i] <> 0 ... var power = Math.pow(10, DecimalPlaces); var rounded = (Math.round(NumberArray[i]*power))/power; numStruct.value = rounded; numStruct.valueAbs = Math.abs(rounded); numStruct.toString = numStruct.valueAbs.toString(); if(numStruct.toString.indexOf(".") < 1){ numStruct.toString += ".0"; } numStruct.decimalIndex = numStruct.toString.indexOf("."); var splitNum = numStruct.toString.split("."); numStruct.integer = numStruct.sign + splitNum[0]; numStruct.integerLength = numStruct.integer.length; numStruct.mantissa = splitNum[1]; numStruct.mantissaLength = numStruct.mantissa.length; numberStructureArray.push(numStruct); }// end for (var i = 0; i < NumberArray.length; i++) // scan array for max integer and mantissa lengths: for(var i = 0; i < numberStructureArray.length; i++){ if(numberStructureArray[i].integerLength > integerLengthMax){ integerLengthMax = numberStructureArray[i].integerLength; } if(numberStructureArray[i].mantissaLength > mantissaLengthMax){ mantissaLengthMax = numberStructureArray[i].mantissaLength; } }// end for(var i = 0; i < numberStructureArray.length // format number to align decimals: document.write('<pre>'); for(var i = 0; i < numberStructureArray.length; i++){ // prepend spaces to integer component: while(numberStructureArray[i].integerLength < integerLengthMax){ // numberStructureArray[i].integer = " " + numberStructureArray[i].integer; numberStructureArray[i].integerLength = numberStructureArray[i].integer.length; }// end while(numberStructureArray[i].integerLength < integerLengthMax // append "0" to mantissa component: while(numberStructureArray[i].mantissaLength < mantissaLengthMax){ numberStructureArray[i].mantissa += "0"; numberStructureArray[i].mantissaLength = numberStructureArray[i].mantissa.length; }// end while(numberStructureArray[i].mantissaLength < mantissaLengthMax // concatenate formatted integer + decimal + mantissa: numberStructureArray[i].formattedResult = numberStructureArray[i].integer + "." + numberStructureArray[i].mantissa; document.writeln(numberStructureArray[i].formattedResult); }// end for(var i = 0; i < numberStructureArray.length document.write('</pre>'); };// end var AlignDecimal = function AlignDecimal(numArray, 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.