gpt4 book ai didi

javascript - 使用额外项目修改顺序键控对象

转载 作者:行者123 更新时间:2023-11-29 16:36:22 24 4
gpt4 key购买 nike

我正在使用一个键控对象,该对象代表时间表数据,特别是特定“行程”的各种停靠站的计时点

所以目前我得到了一个停止位置列表以及一个行程列表,如下所示:

var locations = [{id: 0, name: 'A'},{id: 1, name: 'B'},{id: 2, name: 'C'},{id: 3, name: 'D'}]
var trips = [{
times: {
'0': '06:00',
'1': '06:30'
}
}, {
times: {
'1': '07:00',
'2': '07:30',
'4': '08:45'
}
}, {
times: {
'1': '07:45',
'3': '09:00'
}
}];

我想要做的是,如果行程不访问特定站点,则添加一个新的键控项,但使用空字符串值,使用未访问的站点 ID 作为键值。

所以我想最终得到像这样转换后的对象:

var trips = [{
times: {
'0': '06:00',
'1': '06:30',
'2': '',
'3': '',
'4': ''
}
}, {
times: {
'0': '',
'1': '07:00',
'2': '07:30',
'3': ''
'4': '08:45'
}
}, {
times: {
'0': '',
'1': '07:45',
'2': '',
'3': '09:00',
'4': ''
}
}];

我正在考虑循环遍历每个 times 对象中的键,并与前一个键进行比较,以查看键值之间的差距,这样我就可以尝试计算出有多少个键插入 - 但使用像 Object.keys(...) 这样的东西并不能保证键的迭代顺序,所以我看不出这对我有帮助。

我能想到的唯一其他方法是将对象转换为稀疏数组,并使用原始对象的键来知道在什么位置添加数组项,然后用空值填充数组的间隙我需要。

有人可以在这里提供有关最佳方法的建议吗?谢谢

最佳答案

你是对的,你不能依赖按键的顺序,但你可以使用 Array.prototype.includes 来查看你的行程是否缺少特定位置。可能有更聪明的方法,但这似乎有效:

var locations = [{id: 0, name: 'A'},{id: 1, name: 'B'},{id: 2, name: 'C'},{id: 3, name: 'D'}]
var trips = [{
times: {
'0': '06:00',
'1': '06:30'
}
}, {
times: {
'1': '07:00',
'2': '07:30',
'4': '08:45'
}
}, {
times: {
'1': '07:45',
'3': '09:00'
}
}];
// create an array of all the location ids
var locationIds = [];
locations.forEach(function(location){
locationIds.push('' + location.id); // convert to string before pushing because your `times` objects' keys are strings
});

trips.forEach(function(trip) {
// here are all the trips already defined:
var existingTrips = Object.keys(trip.times);
// then iterate over all locations to add the new elements where they don't exist
locationIds.forEach(function(locationId) {
// so if we don't have a trip, add a blank one!
if (!existingTrips.includes(locationId)) {
trip.times[locationId] = '';
}
})
});
console.log(trips);

关于javascript - 使用额外项目修改顺序键控对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51023549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com