>我有一个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等(,并使用"名称"值来标识每个项目?我看过lodash.keyBy,但我无法将"name"作为标识符。最终目标是能够做obj[itemName]
电话 - 并获得价格。
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>
为什么必须用_.keyBy
来完成? _.each
和_.omit
怎么样?(_.omit
假设您不再需要name
键/值对(
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
像这样?
x = x={"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"} }
_.reduce(x, (acc,o) => {acc[o.name] = o; return acc;}, {})
如果需要,还可以从生成的键中删除"名称",还可以创建原始文件的副本而不是引用。
_.reduce(x, (acc,o) => {acc[o.name] = Object.assign({},o); delete acc[o.name].name; return acc;}, {})
这通过给出特定名称为您提供整个项目。
var jsonArray = [{name: "AK-47 | Aquamarine Revenge (Factory New)", price: "38.96", sold: "157"}, {name: "Glock-18 | Fade (Factory New)", price: "287,10", sold: "256"}];
function match(x) {
return x[this[0]]===this[1];
}
var nameToCheck = "AK-47 | Aquamarine Revenge (Factory New)"
var getObject = jsonArray.filter(match, ["name", nameToCheck]);
console.log(getObject);
如果你想要价格,你只需要:
var price = getObject[0].price;