[英]ecma6 shortest for loop with if check
ecmascript 6中實現此for循環的最短方法是什么:
var data = {
sales: [
{
name: "Jim Frost",
region: "USA East",
phone: "212-555-1212",
email: "jfrost@acme-travel.com"
},
{
name: "Jan Smith",
region: "USA West",
phone: "310-555-1212",
}
]
};
這是我嘗試查看密鑰是否等於手動設置的變量,然后更改該密鑰項的字段,如果不相同,則將其更改為其他內容。
var str = '0'; // could also be an integer
for (var key in data.sales) {
key === str ? data.sales[key].region = 'StateChosen' : data.sales[key].region = 'stateEliminated';
}
使用ecma6,object.keys,map,filter,every等方法實現此目的的最短方法是什么?
您的示例可以通過執行以下操作來完成:
data.sales.forEach(el => el.region = 'stateEliminated'); // Change every region to eliminated
data.sales[str].region = 'StateChosen'; // Change back the selected to StateChosen.
注意: 我假設 str
是data.sales
的有效鍵。
帶有解構賦值和.entries()
for of
循環將有所幫助。
for (let [k, v] of data.sales.entries())
v.region = k == str ? 'StateChosen' : 'stateEliminated';
var data = { sales: [ { name: "Jim Frost", region: "USA East", phone: "212-555-1212", email: "jfrost@acme-travel.com" }, { name: "Jan Smith", region: "USA West", phone: "310-555-1212", } ] }; var str = '0'; for (var [k, v] of data.sales.entries()) v.region = k == str ? 'StateChosen' : 'stateEliminated'; console.log(data);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.