Javascript 像JS中的数组一样分解对象?
给定以下代码:Javascript 像JS中的数组一样分解对象?,javascript,Javascript,给定以下代码: const civic = {make: 'Honda', model: 'Civic'}; function logArgs(make, model) { console.log(make); console.log(model) } 我想这样做: logArgs(...civic); 而不是: logArgs(civic.make, civic.model); 我得到: (索引):39未捕获类型错误:找到不可调用的@迭代器 是否有某种方法可以分解数组之类的对象
const civic = {make: 'Honda', model: 'Civic'};
function logArgs(make, model) {
console.log(make);
console.log(model)
}
我想这样做:
logArgs(...civic);
而不是:
logArgs(civic.make, civic.model);
我得到:
(索引):39未捕获类型错误:找到不可调用的@迭代器
是否有某种方法可以分解数组之类的对象,或者我试图做的事情是不可能的?使用
const-civic={make:'Honda',model:'civic'};
函数logArgs({make,model}){
控制台日志(make);
console.log(模型)
}
logArgs(civic)
在分解对象参数civic时,我们得到了一个更简洁的函数,或者您可以只分解civic
来分配不同的变量,如下所示
const-civic={make:'Honda',model:'civic'};
const{make,model,year=“2019”}=civic;
控制台日志(make);
对数(年);
函数logArgs({make,model}){
控制台日志(make);
console.log(模型)
}
logArgs(思域)
请注意,这将取决于对象的顺序,这可能很难进行扩展,因为对象没有内置迭代器,所以需要为对象实现一个迭代器 这种方法只接受值,但任何其他方法都可以工作,比如返回条目
函数日志参数([make,model]){
控制台日志(make);
console.log(模型)
}
const civic={make:'Honda',model:'civic'};
civic[Symbol.iterator]=函数*(){
屈服对象。价值观(公民);
};
logArgs(…civic)代码>现在还不清楚你喜欢在传播后使用哪个函数。我不认为这回答了这个问题,但它是正确的,我不确定这个问题是否真的可以回答…所以请使用+1!这只适用于给定的对象,OP不需要任何对象的通用版本吗?我已经展示了函数参数destructuring和object destructuring,但没有完全说明这与Juan的答案有什么不同。我还必须查找:*Ty再次获得有趣的答案。这是我最终使用的解决方案,谢谢。尼娜也有一个有趣的方法。
logArgs(...Object.values(civic))