目的是使一个数组具有另一个数组中特定键的所有唯一值。这些唯一值(现在是新数组中的键)的值将是它们在原始数组中出现的次数。
到目前为止,这是我的代码:
for (let i = 0; i < data.length; i++) {
let theStupidKey = data[i].DeliveryStatus;
if (
this.differentValuesOfStatus.indexOf(theStupidKey) == "-1"
) {
this.differentValuesOfStatus.push(theStupidKey: 1);
// this.differentValuesOfStatus[theStupidKey].push(theStupidKey = 1);
}
else {
this.differentValuesOfStatus[theStupidKey] = 1
}
}
console.log(this.differentValuesOfStatus);
};
但是语法是错误的,我尝试了一切我想使它起作用的方法。
基本上,我正在遍历数组。
如果第二个数组中不存在“ deliverystatus”键的值,则将其添加为“ 1”。
如果该号码已经存在,我想为其添加另一个号码。
答案 0 :(得分:1)
一个数组只能保存一个值列表。如果要存储键和相应的值,则应使用地图:
class Test {
differentValuesOfStatus: Map<string, number>;
test(data: {DeliveryStatus: string}[]) {
this.differentValuesOfStatus = new Map<string, number>();
for (let i = 0; i < data.length; i++) {
let theStupidKey = data[i].DeliveryStatus;
let value = this.differentValuesOfStatus.get(theStupidKey);
this.differentValuesOfStatus.set(theStupidKey,
(value === undefined ? 0 : value) + 1);
}
console.log(this.differentValuesOfStatus);
}
}
let t = new Test();
t.test([
{ DeliveryStatus: "Accepted" },
{ DeliveryStatus: "Rejected" },
{ DeliveryStatus: "Accepted" }
]);
答案 1 :(得分:0)
我认为您可以创建一个对象,将您的状态名称作为Key,并将出现次数作为值。这是实现此目的的代码。
for (let i = 0; i < data.length; i++)
{
let theStupidKey = data[i].DeliveryStatus;
if (!this.differentValuesOfStatus.hasOwnProperty(theStupidKey)) {
this.differentValuesOfStatus[theStupidKey] = 0;
}
this.differentValuesOfStatus[theStupidKey] = this.differentValuesOfStatus[theStupidKey] + 1;
}
console.log(this.differentValuesOfStatus);
您将获得像这样的资源库。
{Status1: 2, Status2: 3, Status3: 1, Status4: 3}
但是,如果您想要一个数组,则可以执行以下操作,
let newArray = [];
for (var key in this.differentValuesOfStatus) {
newArray.push({ "Status": key, "Occurence": this.differentValuesOfStatus[key] });
}
console.log(newArray);
输出将为
[{status: "Status1", Occurence: 2},
{status: "Status2", Occurence: 3},
{status: "Status3", Occurence: 1},
{status: "Status4", Occurence: 3}]