经过详尽的搜索,我还没有找到明确的答案来解决我的问题。这可能部分是由于对 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);
关于javascript - 设置对象数据结构数组属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27965076/