微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将数学或函数应用于 JavaScript 对象中的每个元素

如何解决如何将数学或函数应用于 JavaScript 对象中的每个元素

我在 js 中有一个对象:{x: 0,y: 0},我想将 x 和 y 都加 1。现在,这不是一个大对象,所以我可以只使用 placeholder.xplaceholder.y,不是很难。但是,如果我想向对象添加更多内容代码会变得非常冗长且重复,那么是否有一种更短的方法可以将函数或数学应用于对象中的所有内容

解决方法

您可以使用 Object.keys 获取对象键的可迭代数组,然后使用它来循环每个并执行您想要的功能:

const myObject = {x: 1,y: 1};

for (key of Object.keys(myObject)) {
  myObject[key]++;
}

console.dir(myObject);

在生产级代码中,您应该检查以确保您尝试修改的数据是数字类型的,这样您就不会无意中尝试增加非数字值:

const myObject = {x: 1,y: 1};

for (key of Object.keys(myObject)) {
  if (typeof myObject[key] === 'number') myObject[key]++;
}

console.dir(myObject);

,

您可以使用 Object.keys() 循环对象:

const p1 = {
  x: 0,y: 0
}

function translateXYbyN(p,n) {
  Object.keys(p).forEach((c) => p[c] = p[c] + n);
}

console.log(p1);
translateXYbyN(p1,1);
console.log(p1);

此外,您还可以提供键映射以仅操作所需的键:

    const p2 = {
      x: 0,y: 0,name: "point"
    }

    function translateXYbyN(p,n,mask) {
      Object.keys(p).forEach((c) => {
        if(mask.includes(c)) 
          p[c] = p[c] + n
        });
    }

    console.log(p2);
    translateXYbyN(p2,1,['x','y']);
    console.log(p2);

,

你可以创建一个函数:

const incObj = o => { ++o.x; ++o.y }

const placeholder = {x: 1,y: 1}

incObj( placeholder )


console.log( placeholder )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。