[英]Javascript: Adding all elements but those in an array
I have an array of column indexes that looks like, for example, [2, 4, 5] and an object with string value keys ranging from "0" through "6".我有一个列索引数组,例如 [2, 4, 5] 和一个字符串值键从“0”到“6”的对象。
I want to create a new array containing all elements from my original object except those with keys matching any value in my column index array.我想创建一个新数组,其中包含原始对象中的所有元素,但那些键与列索引数组中的任何值匹配的元素除外。 This is how I'm doing it currently but I'm not happy with it:这就是我目前的做法,但我对此并不满意:
const convertObjectToArray = (columnIndexes, rowObject) => {
return Object.keys(rowObject).map(key => {
let rowValue = '';
if (columnIndexes.indexOf(parseInt(key)) === -1) {
rowValue = rowObject['' + key];
}
return rowValue;
});
};
Perhaps there is a very simple, straightforward way of doing this and I'm just missing it?也许有一种非常简单,直接的方法可以做到这一点,而我只是想念它?
const convertObjectToArray = (columnIndexes, rowObject) =>
Object.keys(rowObject)
.filter( key => columnIndexes.includes(+key))
.map(key => rowObject[key])
Or if you really want empty strings:或者如果你真的想要空字符串:
const convertObjectToArray = (columnIndexes, rowObject) =>
Object.entries(rowObject)
.map(([key, value]) =>
columnIndexes.includes(+key)
?value
:""
);
Here's a solution very close to what you were working with:这是一个非常接近您正在使用的解决方案:
const convertObjectToArray = (columnIndexes, rowObject) => {
return Object.keys(rowObject).map(key => {
let rowValue = '';
if (columnIndexes.indexOf(key) === -1) {
rowValue = rowObject[key];
}
return rowValue;
});
};
A straightforward way is to reorganize your code to build the result array directly while looping over the rowObject
:一种直接的方法是重新组织代码以在循环遍历rowObject
直接构建结果数组:
function convertObjectToArray(columnIndexes, rowObject) {
let res = [];
for(let key in rowObject)
if(columnIndexes.indexOf(+key) < 0)
res.push(rowObject[key]);
return res;
}
Working demo code in the snippet below:以下代码段中的工作演示代码:
let excludeColumns = [2, 4, 5]; let rowObject= { '0': 'value 0', '1': 'value 1', '2': 'value 2', '3': 'value 3', '4': 'value 4', '5': 'value 5', '6': 'value 6' }; console.log( convertObjectToArray(excludeColumns, rowObject) ); function convertObjectToArray(columnIndexes, rowObject) { let res = []; for(let key in rowObject) if(columnIndexes.indexOf(+key) < 0) res.push(rowObject[key]); return res; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.