从地图值中删除最后一个字母

时间:2016-10-29 10:00:35

标签: javascript jquery angularjs

所以我从后端得到这个:

{"Item":{"userEmail":"b","Username":"bUsername","Push":"sdsdsd","Password":"sdsds","Buddy":{"datatype":"SS","contents":{"Drake":"Drake","Ola":"Ola","b":"b","d":"d"}}}}

我使用Object.Keyscontents缩小为:

Drake,Ola,b,d

然后我map给予:

[{"id":"Drake"},{"id":"Ola"},{"id":"b"},{"id":"d"}]

然后在我的Angular Front-end上使用.id。我想删除每个值的最后一个字母,即离开Drak,Ol等。我已经尝试了很多方法但是失败了,我怎么能实现这一点,以便id具有这些值?

修改

我现在也希望获得已削减的值并添加它以使最终产品为[{"id":"Drak",valueThatWasCut:"e"}]

3 个答案:

答案 0 :(得分:0)

创建一个临时内容对象并进行更改。

然后在原始对象中设置它。 ES6扩展运算符将保存其余数据,而无需重新指定所有键和值。

let items = {"Item:{"userEmail":"b","Username":"bUsername","Push":"sdsdsd","Password":"sdsds","Buddy":{"datatype":"SS","contents":{"Drake":"Drake","Ola":"Ola","b":"b","d":"d"}}}};
let contents = items.Item.Buddy.contents;

let contentsNew = Object.keys(contents).map((content) => {
    return {[content.substring(0, content.length-1)]: content.substring(0, content.length-1), valueThatWasCut: content[content.length-1]};
});

items = {...items, Item: {...items.Item,Buddy:{...items.Item.Buddy,contents: contentsNew}}};
console.log(items);

答案 1 :(得分:0)

也许是这样的:

var arr = [{"id":"Drake"},{"id":"Ola"},{"id":"b"},{"id":"d"}];
var result = arr.map(x => x.id.slice(0,-1));
console.log(result); // [ 'Drak', 'Ol', '', '' ]

答案 2 :(得分:0)

您可以迭代对象的键,并使用短字符串构建一个新对象。



var data = {"Item":{"userEmail":"b","Username":"bUsername","Push":"sdsdsd","Password":"sdsds","Buddy":{"datatype":"SS","contents":{"Drake":"Drake","Ola":"Ola","b":"b","d":"d"}}}},
    ids = Object.keys(data.Item.Buddy.contents).reduce(function (r, k) { 
        var n = k.slice(0, -1);
        return n ? r.concat({ id: n }) : r;
    }, []);

console.log(ids);