在对象的基础上添加数组中的元素



const prefer={"cs":{"c1":true,"c2":true,"c3":false,"c4":true}}
setArray((prevArray)=>{
return prevArray.filter(function(array){
//code here
})
});

我想在prefer对象的基础上设置数组,就像如果c1为true,那么我想把它添加到数组中一样我也需要初始化数组吗?在上面的例子中,array=["c1","c2","c4"]。我们还需要过滤方法吗?或者我们可以使用其他方法吗

您可以使用for在循环中迭代映射/对象

const prefer = { c1: true, c2: true, c3: false, c4: true };

let arr = [];
for (let key in prefer) {
if (prefer[key]) arr.push(key); // modify how u want to save

// arr.push({ [key]: prefer[key] }); // if u want key and value
}
console.log(arr);

您可以将其表达如下,

const prefer = { "c1":true, "c2":true, "c3":false, "c4":true }
const output = Object.entries(prefer)
.filter(([, value]) => value)  // !!value or Boolean(value) to coerce
.map(([key]) => key)
console.log(output)

这有点复杂,但它很有效:

const prefer = {
"c1": true,
"c2": true,
"c3": false,
"c4": true
}
var setArray = ( prevArray ) => {
return Object.keys(prevArray).filter(function(val, i) {
if ( prevArray[Object.keys(prevArray)[i]] ) return Object.keys(prevArray)[i];    
})
};
console.log( setArray(prefer) );

最新更新