以下のことを行うより良い方法はありますか? particles
配列のデータを検索し、検索日のtimestamp
配列のインデックス/位置に一致するデータを検索したいとします。Javascript - オブジェクト配列内のデータを検索して照合するより良い方法はありますか?
私のサンプルデータ:
var data = {
particles: ['1.0',
'1.1',
'1.2',
'2.0',
'2.1',
'2.2',
'3.0',
'3.1'],
timestamp: ['2016-10-10',
'2016-10-10',
'2016-10-10',
'2016-10-11',
'2016-10-11',
'2016-10-11',
'2016-10-13',
'2016-10-13'],
};
マイコード:
var find = '2016-10-11';
var lookup = {};
var timestamp = [];
var index = [];
for (var key in data.timestamp) {
if (data.timestamp[key] === find) {
timestamp.push(data.timestamp[key]);
index.push(key);
}
}
console.log(timestamp);
// --> ["2016-10-11", "2016-10-11", "2016-10-11"]
var particles = [];
for (var key in data.particles) {
// Check if the key is in the index.
if (index.indexOf(key) > -1) {
particles.push(data.particles[key]);
}
}
console.log(particles);
// --> ["2.0", "2.1", "2.2"]
lookup.particles = particles;
lookup.timestamp = timestamp;
console.log(lookup);
結果:
{
particles: [
'2.0',
'2.1',
'2.2'
],
timestamp: [
'2016-10-11',
'2016-10-11',
'2016-10-11'],
}
私はtimestamp
とparticles
に何千ものアイテムのを持つことになりますので、私は思いますmaの上にループ将来、パフォーマンス上の問題が発生する可能性があります。
また、私は先物内のオブジェクトに複数のキーを持っているかもしれません:
{
particles1: [...],
particles2: [...],
particles3: [...],
timestamp: [...]
}
だから私のは手動のために行くには良い方法はおそらくマッチングデータを探していません。
もっと良いアイデアを教えてください。
timestamp
は常にデータ内の固定キーです。
私はバニラのJavascriptソリューションを推奨します。
あなたは何を意味するかに設定された結果は 'match'指標を得ることができますか?これらの配列の共通ポイントは何ですか? – Weedoze
配列の生成方法を制御できますか? – Sergeon
@Sergeonはいそうです。 – laukok