【发布时间】:2019-01-27 20:05:15
【问题描述】:
在值数组中
var legends =['some','key', 'value'];
具有相应 obj 值的图形;
var graph = {
orgid: ['123', '123556', '456', '345', '2345'],
some: [1500, 1500, 1500, 1500, 1500],
key: [900, 900, 900, 900, 900],
value: [1072, 1373, 946, 715, 276]
};
我想提取仅包含数组中提到的键值的图形,以插入到另一个数组中
我已经执行了代码,但它只有在 obj 中提到的顺序中的键顺序相同时才有效
es5方式
var grphFilter = [];
var countRaw = 0;
for (var key in graph) {
if (key === legends[count] ) {
grphFilter.push(graph[key]);
count++;
}
}
es6方式
let grphFilter = [];
let count = 0;
const result = Object.entries(graph).forEach(function([key, value]) {
if (key === legends[count]) {
grphFilter.push(value);
count++
}
})
但它不适用于不按顺序排列的键。
var legendsNotOrder =['key', 'some', 'value'];
不考虑legends数组中的值的顺序,结果应该是最终结果,无论是legends还是legendsNotOrder
最终结果
var graphfiltered = [
[1500, 1500, 1500, 1500, 1500],
[900, 900, 900, 900, 900],
[1072, 1373, 946, 715, 276]
];
【问题讨论】:
-
graphfiltered的结构与您的graph(普通对象)不同(它是一个数组)。这背后的逻辑是什么? -
你想检查
key是否是legends数组中的一个键,而不是if (key === legends[count])
标签: javascript arrays object ecmascript-6