我是新手,而且我的英语也不是那么好。我的问题是我正在尝试从数组构建一个对象表,但没有成功。目标是建立简单的发票脚本,但我卡住了。假设我有一个包含某些位置的数组:
recordArr = [value,valueWithTax,taxInPercent]
我想构建一个对象数组,用关键字“taxInPercent”对位置(value,valueWithTax)求和。我现在所做的是:
for(key in recordArr){
if ( isNaN(SortrRecordArr[recordArr[key][2]]) ) {
SortrRecordArr[recordArr[key][2]] = [recordArr[0], recordArr[1]]
}
else {
newValue = SortrRecordArr[recordArr[key][2]][0] + recordArr[0]
newValueWithTax = SortrRecordArr[recordArr[key][2]][1] + recordArr[1]
SortrRecordArr[recordArr[key][2]] = [newValue, newValueWithTax];
}
}
但是这只保留了recordArr中出现的最后一个值
当然我早先定义了对象和变量。我希望我能清楚自己。
所以就是这样:
假设我有一个数组:
recordArr[1] = [1 , 2 , 23]
recordArr[2] = [1 , 2 , 23]
recordArr[3] = [2 , 3 , 8]
recordArr[4] = [2 , 3 , 8]
recordArr[5] = [3 , 4 , 5]
recordArr[6] = [3 , 4 , 5]
我正在搜索结果如下:
SortRecordArray[23] = [2 , 4]
SortRecordArray[8] = [4 , 6]
SortRecordArray[5] = [6 , 8]
我希望能更清楚地理解我想要做的事情。
感谢您的建议,请保持温和。
答案 0 :(得分:1)
如果对象中存在项目,您应该与.hasOwnProperty()核对。
这是您需要的整个编辑代码,
var recordArr = [];
var SortrRecordArr = [];
recordArr[1] = [1 , 2 , 23];
recordArr[2] = [1 , 2 , 23];
recordArr[3] = [2 , 3 , 8];
recordArr[4] = [2 , 3 , 8];
recordArr[5] = [3 , 4 , 5];
recordArr[6] = [3 , 4 , 5];
for(var key in recordArr){
if (!SortrRecordArr.hasOwnProperty(recordArr[key][2])) {
SortrRecordArr[recordArr[key][2]] = [recordArr[key][0], recordArr[key][2]];
} else {
newValue = SortrRecordArr[recordArr[key][2]][0] + recordArr[key][0];
newValueWithTax = SortrRecordArr[recordArr[key][2]][3] + recordArr[key][4];
SortrRecordArr[recordArr[key][2]] = [newValue, newValueWithTax];
}
}
console.log(SortrRecordArr)