本文整理汇总了TypeScript中d3-array.bisector函数的典型用法代码示例。如果您正苦于以下问题:TypeScript bisector函数的具体用法?TypeScript bisector怎么用?TypeScript bisector使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bisector函数的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: compareToTimeKey
export const getIndexAtTimeKey = <Value>(
keyAccessor: (value: Value) => TimeKey,
compareValues?: Comparator
) => {
const comparator = compareToTimeKey(keyAccessor, compareValues);
const collectionBisector = bisector(comparator);
return (collection: Value[], key: TimeKey): number | null => {
const index = collectionBisector.left(collection, key);
if (index >= collection.length) {
return null;
}
if (comparator(collection[index], key) !== 0) {
return null;
}
return index;
};
};
示例2: Date
num = d3Array.bisect(readonlyStringyNumbersArray, '21');
num = d3Array.bisect(readonlyStringyNumbersArray, '21', 1);
num = d3Array.bisect(readonlyStringyNumbersArray, '21', 1, 4);
num = d3Array.bisect(readonlyDateArray, new Date(2011, 2, 1));
num = d3Array.bisect(readonlyDateArray, new Date(2011, 2, 1), 1);
num = d3Array.bisect(readonlyDateArray, new Date(2011, 2, 1), 1, 2);
// bisector() ------------------------------------------------------------------
mixedObjectArray.sort((a, b) => a.date.valueOf() - b.date.valueOf());
let mixedObjectDateBisectorObject: d3Array.Bisector<MixedObject, Date>;
// define using accessor
mixedObjectDateBisectorObject = d3Array.bisector<MixedObject, Date>(el => el.date);
// define using comparator
mixedObjectDateBisectorObject = d3Array.bisector<MixedObject, Date>((el, x) =>
el.date.valueOf() - x.valueOf());
// bisect left
num = mixedObjectDateBisectorObject.left(mixedObjectArray, new Date(2015, 3, 14));
num = mixedObjectDateBisectorObject.left(mixedObjectArray, new Date(2015, 3, 14), 1);
num = mixedObjectDateBisectorObject.left(mixedObjectArray, new Date(2015, 3, 14), 3, 4);
num = mixedObjectDateBisectorObject.left(readonlyMixedObjectArray, new Date(2015, 3, 14));
num = mixedObjectDateBisectorObject.left(readonlyMixedObjectArray, new Date(2015, 3, 14), 1);
num = mixedObjectDateBisectorObject.left(readonlyMixedObjectArray, new Date(2015, 3, 14), 3, 4);
// bisect right
示例3: bisector
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { bisector } from 'd3-array';
import { LogEntries as LogEntriesQuery } from '../../../common/graphql/types';
import { compareToTimeKey, getIndexAtTimeKey, TimeKey } from '../../../common/time';
export type LogEntry = LogEntriesQuery.Entries;
export type LogEntryMessageSegment = LogEntriesQuery.Message;
export const getLogEntryKey = (entry: LogEntry) => entry.key;
const logEntryTimeBisector = bisector(compareToTimeKey(getLogEntryKey));
export const getLogEntryIndexBeforeTime = logEntryTimeBisector.left;
export const getLogEntryIndexAfterTime = logEntryTimeBisector.right;
export const getLogEntryIndexAtTime = getIndexAtTimeKey(getLogEntryKey);
export const getLogEntryAtTime = (entries: LogEntry[], time: TimeKey) => {
const entryIndex = getLogEntryIndexAtTime(entries, time);
return entryIndex !== null ? entries[entryIndex] : null;
};
示例4: Date
num = d3Array.bisect(['0', '2', '3', '4', '7', '8'], '21', 1);
num = d3Array.bisect(['0', '2', '3', '4', '7', '8'], '21', 1, 4);
num = d3Array.bisect([new Date(2010, 1, 1), new Date(2011, 1, 1), new Date(2012, 1, 1), new Date(2013, 1, 1)], new Date(2011, 2, 1));
num = d3Array.bisect([new Date(2010, 1, 1), new Date(2011, 1, 1), new Date(2012, 1, 1), new Date(2013, 1, 1)], new Date(2011, 2, 1), 1);
num = d3Array.bisect([new Date(2010, 1, 1), new Date(2011, 1, 1), new Date(2012, 1, 1), new Date(2013, 1, 1)], new Date(2011, 2, 1), 1, 2);
// bisector() ------------------------------------------------------------------
mixedObjectArray.sort(function (a, b) { return a.date.valueOf() - b.date.valueOf(); });
let mixedObjectDateBisectorObject: d3Array.Bisector<MixedObject, Date>;
// define using accessor
mixedObjectDateBisectorObject = d3Array.bisector<MixedObject, Date>(function (el) {
return el.date;
});
// define using comparator
mixedObjectDateBisectorObject = d3Array.bisector<MixedObject, Date>(function (el, x) {
return el.date.valueOf() - x.valueOf();
});
// bisect left
num = mixedObjectDateBisectorObject.left(mixedObjectArray, new Date(2015, 3, 14));
num = mixedObjectDateBisectorObject.left(mixedObjectArray, new Date(2015, 3, 14), 1);
num = mixedObjectDateBisectorObject.left(mixedObjectArray, new Date(2015, 3, 14), 3, 4);
// bisect right
num = mixedObjectDateBisectorObject.right(mixedObjectArray, new Date(2015, 3, 14));
num = mixedObjectDateBisectorObject.right(mixedObjectArray, new Date(2015, 3, 14), 1);
示例5: bisector
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { bisector } from 'd3-array';
import { compareToTimeKey, TimeKey } from '../time';
export interface SearchResult {
gid: string;
fields: TimeKey;
matches: SearchResultFieldMatches;
}
export interface SearchResultFieldMatches {
[field: string]: string[];
}
export const getSearchResultKey = (result: SearchResult) =>
({
gid: result.gid,
tiebreaker: result.fields.tiebreaker,
time: result.fields.time,
} as TimeKey);
const searchResultTimeBisector = bisector(compareToTimeKey(getSearchResultKey));
export const getSearchResultIndexBeforeTime = searchResultTimeBisector.left;
export const getSearchResultIndexAfterTime = searchResultTimeBisector.right;
示例6: getStreamItemTimeKey
}
export function getStreamItemTimeKey(item: StreamItem) {
switch (item.kind) {
case 'logEntry':
return item.logEntry.key;
}
}
export function getStreamItemId(item: StreamItem) {
switch (item.kind) {
case 'logEntry':
return `${item.logEntry.key.time}:${item.logEntry.key.tiebreaker}:${item.logEntry.gid}`;
}
}
export function parseStreamItemId(id: string) {
const idFragments = id.split(':');
return {
gid: idFragments.slice(2).join(':'),
tiebreaker: parseInt(idFragments[1], 10),
time: parseInt(idFragments[0], 10),
};
}
const streamItemTimeBisector = bisector(compareToTimeKey(getStreamItemTimeKey));
export const getStreamItemBeforeTimeKey = (streamItems: StreamItem[], key: TimeKey) =>
streamItems[Math.min(streamItemTimeBisector.left(streamItems, key), streamItems.length - 1)];