【发布时间】:2019-01-22 17:26:59
【问题描述】:
我想创建电视节目列表应用。 我需要调整 tvProgram 单元格大小的函数。
输入
[
{channel: "x", start: "2019-01-08T06:00:00", distanceFromTop: 6},
{channel: "y", start: "2019-01-08T06:30:00", distanceFromTop: 9},
{channel: "x", start: "2019-01-08T07:00:00", distanceFromTop: 9},
{channel: "x", start: "2019-01-08T07:30:00", distanceFromTop: 18},
{channel: "y", start: "2019-01-08T08:00:00", distanceFromTop: 13},
{channel: "x", start: "2019-01-08T08:00:00", distanceFromTop: 15}
]
输出:
[
{channel: "x", start: "2019-01-08T06:00:00", distanceFromTop: 6},
{channel: "y", start: "2019-01-08T06:30:00", distanceFromTop: 9},
{channel: "x", start: "2019-01-08T07:00:00", distanceFromTop: 10},
{channel: "x", start: "2019-01-08T07:30:00", distanceFromTop: 18},
{channel: "y", start: "2019-01-08T08:00:00", distanceFromTop: 19},
{channel: "y", start: "2019-01-08T08:00:00", distanceFromTop: 19}
]
我想根据以下条件将 distanceFromTop 加 1。
- “开始”必须排序。
- 必须对“distanceFromTop”进行排序。
- 如果有相同的“start”对象,distanceFromTop 也相同。
- 不要减少距离从顶部,只需加 1。
// wrong
{channel: "y", start: "2019-01-08T08:00:00", distanceFromTop: 13}, // 13 !== 15
{channel: "y", start: "2019-01-08T08:00:00", distanceFromTop: 15}
distanceFromTop must be also same.
// correct
{channel: "y", start: "2019-01-08T08:00:00", distanceFromTop: 15}, // 15 === 15
{channel: "y", start: "2019-01-08T08:00:00", distanceFromTop: 15}
ideal data
const ideal = [
{channel: "x", start: "2019-01-08T06:00:00", distanceFromTop: 6},
{channel: "y", start: "2019-01-08T06:30:00", distanceFromTop: 9},
{channel: "x", start: "2019-01-08T07:00:00", distanceFromTop: 10},
{channel: "x", start: "2019-01-08T07:30:00", distanceFromTop: 18},
{channel: "y", start: "2019-01-08T08:00:00", distanceFromTop: 19},
{channel: "y", start: "2019-01-08T08:00:00", distanceFromTop: 19}
]
如何创建这个函数
ideal = func(ideal)
我试过下面的代码。
const isSorted = (arr) => {
var len = arr.length - 1;
for(var i = 0; i < len; ++i) {
if(arr[i].distanceFromTop > arr[i+1].distanceFromTop) {
return false;
}
}
return true;
}
const func = (arr) => {
output = arr.slice()
while (isSort(ideal)) {
addOne(ideal)
}
return output
}
请告诉我如何编写 addOne 方法。
【问题讨论】:
-
不清楚。
I want to add 1是什么意思?如果两个项目具有相同的start值,并且具有不同的distanceFromTop,则将distanceFromTop更新为相同。应该取哪个对象的distanceFromTop?如果两个项目具有相同的start但具有不同的channel,那么它们是否被视为匹配数据?您应该提供一个涵盖您的场景的输入和输出。
标签: javascript arrays node.js