我认为这是一项简单的任务,但不幸的是,如果没有太多的话,我就无法做到。
我有以下数据结构。我有一个很大的时期"从1开始到30结束。每个对象代表"好"从object.start开始并在object.ends结束的句点。 "差"期间介于" good"可以在1和第一个时期之间,最后一个时期和30个之间。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<form name="quote" id="price-quote">
<div class="container">
<div id="service-tabs" class="container">
<ul class="nav nav-pills">
<li class="active"><a href="#carpet-cleaning" data-toggle="tab">Carpet Cleaning</a></li>
<li><a href="#upholstery-cleaning" data-toggle="tab">Upholstery Cleaning</a></li>
</ul>
<div class="tab-content clearfix">
<div class="tab-pane active" id="carpet-cleaning">
<h3>Carpet Cleaning Options</h3>
<!--how many bedrooms-->
<label class="control-label" for="carpet_cleaning">Bedrooms</label>
<br>
<select class="form-control-1" id="carpet_cleaning">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</div>
<div class="tab-pane" id="upholstery-cleaning">
<h3>Upholstery Cleaning Options</h3>
<!--how many dining room chairs-->
<label class="control-label" for="dining_chairs_cleaning">Dining Room Chairs (each)</label>
<br>
<select class="form-control-1" id="dining_chairs_cleaning">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</div>
</div>
</div>
</div>
</form>
我想得到新的&#34;坏&#34;和#34;好&#34;期间长度。每个数组项代表句点的长度(坏或好的)
const data = [
{start: 2, end: 4},
{start: 10, end: 15},
{start: 17, end 27}
]
是
的结果array = [1, 3, 5, 6, 1, 11, 3]
当我检查第一个object.start是否为0并且最后一个object.end是否为30时,我的主要if?#ology开始。如何避免呢?
答案 0 :(得分:1)
您可以检查第一个起始值是否小于所需的间隔开始时间,并将坏时间段的长度插入结果数组中,然后添加良好时段结果数组的长度。用末尾调整最后一个,然后继续。
最后取剩下的所需间隔并将长度推到结果数组。
miss. given data missing given length length ------------------------- --------- --------- ------ ------ const data = [ {start: 2 , end: 4}, 1 - 1 2 - 4 1 3 {start: 10, end: 15}, 5 - 9 10 - 15 5 6 {start: 17, end: 27} 16 - 16 17 - 27 1 11 ] 28 - 30 3
var data = [{ start: 2, end: 4 }, { start: 10, end: 15 }, { start: 17, end: 27 }],
last = 1,
end = 30,
result = [];
data.forEach(function (o) {
if (last < o.start) {
result.push(o.start - last);
}
result.push(o.end - o.start + 1);
last = o.end + 1;
});
if (last < end) {
result.push(end - last + 1);
}
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;