我有一个对象数组,我想迭代生成一个新的过滤数组.但是,我还需要根据参数从新数组中过滤掉一些对象.我正在尝试这个:
function renderOptions(options) {
return options.map(function (option) {
if (!option.assigned) {
return (someNewObject);
}
});
}
Run Code Online (Sandbox Code Playgroud)
这是一个好方法吗?有更好的方法吗?我愿意使用任何库,如lodash.
我试图弄清楚如何在这个 JSON 对象中递归搜索节点。我尝试过一些东西但无法得到它:
var tree = {
"id": 1,
"label": "A",
"child": [
{
"id": 2,
"label": "B",
"child": [
{
"id": 5,
"label": "E",
"child": []
},
{
"id": 6,
"label": "F",
"child": []
},
{
"id": 7,
"label": "G",
"child": []
}
]
},
{
"id": 3,
"label": "C",
"child": []
},
{
"id": 4,
"label": "D",
"child": [
{
"id": 8,
"label": "H",
"child": []
},
{
"id": 9,
"label": "I",
"child": []
}
]
}
] …
Run Code Online (Sandbox Code Playgroud) 我正在尝试对嵌套对象数组进行排序.它使用静态选择键,但我无法弄清楚如何动态获取它.
到目前为止,我已经有了这段代码
sortBy = (isReverse=false) => {
this.setState(prevState => ({
files: prevState.files.sort((a, b) => {
const valueA = (((a || {})['general'] || {})['fileID']) || '';
const valueB = (((b || {})['general'] || {})['fileID']) || '';
if(isReverse) return valueB.localeCompare(valueA);
return valueA.localeCompare(valueB);
})
}));
}
Run Code Online (Sandbox Code Playgroud)
此时键是硬编码的,['general']['orderID']
但我想通过向函数添加一个keys
参数来使这部分变为动态sortBy
:
sortBy = (keys, isReverse=false) => { ...
Run Code Online (Sandbox Code Playgroud)
keys
是一个嵌套键的数组.对于上面的例子,它将是['general', 'fileID']
.
为实现这一目标需要采取哪些步骤?
注意:子对象可能是未定义的,因此我正在使用 a || {}
注2:我正在使用es6.没有外部包.