使用新键创建对象并分配相同的数组

时间:2018-04-12 04:41:24

标签: javascript underscore.js

您是否拥有以下优化解决方案。

让我们说,

x = { users: [ {id: 1}, {id:2}, {id:3} ] }

我想创建一个具有相同值的新键,输出应为

{ users: { list: [ {id: 1}, {id:2}, {id:3} ], count: 3 }

只使用JS或Underscore一行代码而不需要额外的努力。

我知道其他技巧也是这样做的,但是我们有同样的一线解决方案吗? 帮助赞赏...
感谢。

3 个答案:

答案 0 :(得分:3)

创建对象,并将x数组分配给list。但是,count应为getter,因为list长度可能会发生变化:

const x = { users: [{ id: 1 }, { id: 2 }, { id: 3 }] };
const result = {
  users: {
    list: x.users,
    get count() { return this.list.length; }
  }
};

console.log(JSON.stringify(result));

result.users.list.push({ id: 4 });

console.log(JSON.stringify(result));

答案 1 :(得分:2)

当然,只需将属性定义为对象

const obj = {
  users: [{
    id: 1
  }, {
    id: 2
  }, {
    id: 3
  }]
};
obj.users = { list: obj.users, count: obj.users.length };
console.log(obj);

我建议尽量专注于代码清晰度而不是在线保护

答案 2 :(得分:2)

我不确定为什么这是优化解决方案,因为这是一个简单的普通JavaScript问题:



let x = { users: [{ id: 1 }, { id: 2 }, { id: 3 }] };
let result = {
  users: {
    list: x.users,
    count: x.users.length
  }
};

console.log(result);