这是我的对象 -
[{"index":"style_bags","name":"24"},
{"index":"style_bags","name":"25"},
{"index":"style_bags","name":"26"},
{"index":"category_gear","name":"90"},
{"index":"category_gear","name":"98"},
{"index":"price","name":"400-"}]
这是预期的 -
[{"index":"style_bags","name":"26"},
{"index":"category_gear","name":"98"},
{"index":"price","name":"400-"}]
要求是从javascript中的对象获取最后一个值和密钥对。
根据某些表现的问题我到达这里的方式是通过这段代码 -
if(href.indexOf("&") >= 0){
var hrefSplit = href.split('&');
}
if(!(href.indexOf("&") >= 0)){
var hrefSplit = href.split('?');
var hrefSplit2 = hrefSplit[1].split('=');
}
params.push({ index: hrefSplit2[0], name: hrefSplit2[1]});
var i = 0;
jquery.each(params, function( index, value ) {
var key = value.index;
if(hrefSplit2[0] == key){
i++;
}
});
valueGet.push({ index: hrefSplit2[0], name: hrefSplit2[1]});
我不是一个javascript专业人士,因此如何进一步处理是空白的。
答案 0 :(得分:1)
您可以使用reduce
创建对象,然后使用Object.values
来获取值数组。它将根据index
属性获取最后一个对象。
const data = [{"index":"style_bags","name":"24"}, {"index":"style_bags","name":"25"}, {"index":"style_bags","name":"26"}, {"index":"category_gear","name":"90"}, {"index":"category_gear","name":"98"}, {"index":"price","name":"400-"}]
const result = data.reduce((r, e) => Object.assign(r, {[e.index]: e}), {})
console.log(Object.values(result))
答案 1 :(得分:1)
您可以使用Map
并使用相同的索引属性收集最后一个对象。
var array = [{ index: "style_bags", name: "24" }, { index: "style_bags", name: "25" }, { index: "style_bags", name: "26" }, { index: "category_gear", name: "90" }, { index: "category_gear", name: "98" }, { index: "price", name: "400-" }],
result = [...new Map(array.map(o => [o.index, o])).values()];
console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 2 :(得分:1)
我将创建一个临时对象,存储最后找到的值,然后创建结果数组。
let tempObj = {}
let srcArray = [
{"index":"style_bags","name":"24"},
{"index":"style_bags","name":"25"},
{"index":"style_bags","name":"26"},
{"index":"category_gear","name":"90"},
{"index":"category_gear","name":"98"},
{"index":"price","name":"400-"}];
for (let item of srcArray) {
tempObj[item.index] = item.name
}
let result = Object.keys(tempObj).map(index => {
return {
index,
name: tempObj[index]
}
});
console.log(result)

答案 3 :(得分:1)
您激励我更新javascript linq library以支持.last()
。因此,使用此库,您可以:
var list = [{"index":"style_bags","name":"24"},
{"index":"style_bags","name":"25"},
{"index":"style_bags","name":"26"},
{"index":"category_gear","name":"90"},
{"index":"category_gear","name":"98"},
{"index":"price","name":"400-"}];
var filtered = loq(list).groupBy(x => x.index).select(g => g.last());
console.log(filtered.toArray());
<script src="https://cdn.rawgit.com/biggyspender/loq/cb4e5cb4/lib/loq.min.js"></script>