如何使用lodash.keyBy更改集合中每个项目的标识符?

问题描述 投票:0回答:4

我有一个JSON字符串。

"1":{"name":"AK-47 | Aquamarine Revenge (Battle-Scarred)","price":"13.55","sold":"444"},"2":{"name":"AK-47 | Aquamarine Revenge (Factory New)","price":"38.96","sold":"157"} 

等等...

如何删除数字(1,2,3等...),并使用“name”值来标识每个项目intead?我看过lodash.keyBy,但我无法将“name”作为标识符。最终目标是能够打电话obj[itemName]-并收到价格。

javascript lodash
4个回答
2
投票

Lodash有一个不同的方法_.mapKeys适合这一点好一点:

const obj = {
  "1": {
    "name":"AK-47 | Aquamarine Revenge (Battle-Scarred)",
    "price":"13.55",
    "sold":"444"
  },
  "2":{
    "name":"AK-47 | Aquamarine Revenge (Factory New)",
    "price":"38.96",
    "sold":"157"
  }
}

console.log(_.mapKeys(obj, (val) => val.name));
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>

0
投票

为什么必须用qazxsw poi完成?与qazxsw poi和qazxsw poi怎么样? (qazxsw poi假设您不再需要_.keyBy键/值对)

_.each

见:_.omit


0
投票

像这样?

_.omit

如果需要,还可以从结果键中删除“名称”,还可以创建原始副本而不是引用。

name

-2
投票

这通过给出特定名称为您提供整个项目。

var before = {"1":{"name":"AK-47 | Aquamarine Revenge (Battle-Scarred)","price":"13.55","sold":"444"},"2":{"name":"AK-47 | Aquamarine Revenge (Factory New)","price":"38.96","sold":"157"}};
var after = {};

_.each(before, function(b4) {
  after[b4.name] = _.omit(b4, 'name');
});

如果你想要价格,你只需:

https://repl.it/@dexygen/stackoverflowq48085676
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.