javascript过滤多维数组



我不熟悉javascript,但我需要使用它与散景回调。我创建了一个多维数组,包含以下内容(伪代码)

items =[
["id", Array(2898)],
["NAME", Array(2898)],
["ADDRESS", Array(2898)],
["PHONE", Array(2898)],
];

我想创建一个新的数组,其中包含一个由"id"数组筛选的子集

我试过使用滤镜和一些,但似乎不能得到它的工作。这是我目前得到的

let items = Object.keys(items_obj).map((key) => [key, items_obj[key]]); 
let filter_items = items.filter(function(item){
return item.some(e => e['id'] === ids[0]);

是否有简单的方法来做到这一点?在python中,我只需要过滤df[df['ids']。型号([6]))

多谢

如果你想提取一个"column"对于矩阵中的数据,可以通过在对应的键数组中查找值索引来查找列索引。

const data = [
["id", [1, 2, 3]],
["NAME", ['Bob', 'Joe', 'Nancy']],
["ADDRESS", [1, 2, 3]],
["PHONE", [1, 2, 3]]
];
const
itemsObj = Object.fromEntries(data), // Matrix to Object
itemsArr = Object.entries(itemsObj); // Object to Matrix
const getFrame = (dataFrames, key, value) => {
const [ , keyValues ] = dataFrames.find(([key]) => key === key);
const index = keyValues.indexOf(value);
return dataFrames.map(([k, v]) => [ k, v.find((w, i) => i === index) ]);
};
const
frame = getFrame(data, 'id', 2),
frameObj = Object.fromEntries(frame);

console.log(frameObj);
.as-console-wrapper { top: 0; max-height: 100% !important; }

如果你想选择一个范围的"框架",你可以修改程序,如下所示:

const data = [
["id", [1, 2, 3]],
["NAME", ['Bob', 'Joe', 'Nancy']],
["ADDRESS", [1, 2, 3]],
["PHONE", [1, 2, 3]]
];
const getFrames = (dataFrames, key, values) => {
const [ , keyValues ] = dataFrames.find(([key]) => key === key);
const indicies = values.map(val => keyValues.indexOf(val)).filter(i => i > -1);
return indicies.map(index =>
dataFrames.map(([k, v]) =>
[k, v.find((x, i) => i === index)]));
};
const
frames = getFrames(data, 'id', [2, 3]),
frameObjs = frames.map(frame => Object.fromEntries(frame));

console.log(frameObjs);
.as-console-wrapper { top: 0; max-height: 100% !important; }

最新更新