简体   繁体   English

ecma6最短的循环,如果检查

[英]ecma6 shortest for loop with if check

what is the shortest way to achieve this for loop in ecmascript 6: 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",
            }
        ]
};

here is my attempt to see if the key is equal to my manually set variable, then i change that key item's field, if not, i change it to something else. 这是我尝试查看密钥是否等于手动设置的变量,然后更改该密钥项的字段,如果不相同,则将其更改为其他内容。

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';
}

what is the shortest way to achieve this using ecma6, object.keys, map, filter, every, etc methods? 使用ecma6,object.keys,map,filter,every等方法实现此目的的最短方法是什么?

Your example could be done just by doing: 您的示例可以通过执行以下操作来完成:

data.sales.forEach(el => el.region = 'stateEliminated'); // Change every region to eliminated
data.sales[str].region = 'StateChosen'; // Change back the selected to StateChosen.

Note: I am assuming that str is a valid key in data.sales . 注意: 我假设 strdata.sales的有效键。

A for of loop with destructuring assignment and .entries() would help. 带有解构赋值和.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM