设置对象数据结构数组属性
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[].value。
然后我尝试了:
numberStructure = NumberArray
现在 numberStructure[] 数组收到了 NumberArray[],但显然,numberStructure[].value 是未定义的。
还尝试过:
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 的示例后,我决定尝试一下这个"狙击"功能......
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);
相关文章:
- 如何在不链接/jquery的情况下使用方法应用css属性数组
- 如何使用lodash返回与模式匹配的属性数组
- 从嵌套属性数组中获取对象嵌套值
- 如何使用 javascript 返回数据属性数组
- JQuery 获取返回的属性数组
- 对公共属性数组进行排序
- Angularjs-ng repeat不反映属性数组中的更改
- JADE&NodeJS访问JSON对象属性数组
- Lodash 按数组的属性数组过滤
- 将对象数组转换为属性数组
- 如何从一个共享属性的jQuery集合中获取一个属性数组
- 骨干移除和新视图不会重置其属性数组内容
- 使用JSON从对象数组创建属性数组
- 将数据属性数组转换为对象
- 从属性数组和匹配属性值数组创建JavaScript对象的有效方法
- 访问json中的属性数组
- jquery.获得没有重复的自定义属性数组
- 如何更新对象属性数组值
- 多属性数组语法
- jQuery:生成"name”;动态属性数组