修改数组对象中的键字符串

时间:2016-09-23 23:25:20

标签: javascript arrays

我有以下对象数组:

[{url:"http://www.url1",value: "number1"},{url:"http://www.url2",value: "number2"},{url: "http://www.url3", value: "number3"},etc...]

我想用空字符串替换所有http://www.

看一些答案,我发现了这个:

var resultArr = arr.map(function(x){return x.replace(/http://www./g, '');});

然而,由于map只适用于数组,所以它并不适用于我的情况。

所以我也看看这个:

array = [{url:1,value: 2},{url:3,value: 4},{url: 5, value: 6}]

Object.keys(array).map(function(url, value) {
   array[value] *= 2;
});

但请回复此信息:[undefined, undefined, undefined]。此外,对于最后一个解决方案,我真的不知道应该在哪里使用.replace(/,/g, '')方法...

任何想法?

5 个答案:

答案 0 :(得分:2)

你需要正确的语法。 map没问题,或者在这种情况下forEach变异:

var array = [{url:'http://www.example.com?xyz',value: 2},
             {url:'http://www.example.com?ok',value: 4},
             {url:'http://www.example.com?hello', value: 6}]

array.forEach(function(obj) {
   obj.value *= 2;
   obj.url = obj.url.replace(/http:\/\/www\./g, '');
});

console.log(array);

答案 1 :(得分:2)

ES5:

array.map(function(element) {
  return {
    value: element.value,
    url: element.url.replace('http://www.', '')
  }
})

ES6 +:

array.map(element => ({
   ...element,
   url: element.url.replace('http://www.', '')
}))

答案 2 :(得分:1)

你可以像这样迭代数组:

array.forEach(function(entry) {
    entry.url = entry.url.replace('http://www.','');
});

答案 3 :(得分:1)

你快到了! map不是真正的方法,因为您想要修改列表中的项目。 forEach更有意义



var lst = [{
  url: "http://www.url1",
  value: "number1"
}, {
  url: "http://www.url2",
  value: "number2"
}, {
  url: "http://www.url3",
  value: "number3"
}];

lst.forEach(obj => 
            Object.keys(obj)
                 .forEach(key => 
                          obj[key] = obj[key].replace(/http:\/\/www\./g, '')));

console.log(lst);




答案 4 :(得分:1)

var array = [{url:"http://www.url1",value: "number1"},{url:"http://www.url2",value: "number2"},{url: "http://www.url3", value: "number3"}];
for (var i=0 ; i < array.length ; i++){
    array[i].url = array[i].url.replace("http://www.", "");
};
console.log(array);

相关问题