2016-09-23 103 views
0

密鑰字符串我有以下對象的數組:修改數組對象

[{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, '')方法...

任何想法?

+0

請注意,您需要轉義正則表達式中的特殊字符。然而,你可以使用'.split('。')。pop()'來獲得'url1','url2'等等。 – Xotic750

回答

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

您需要獲得正確的語法。 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

你可以只重複這樣的陣列上:

array.forEach(function(entry) { 
    entry.url = entry.url.replace('http://www.',''); 
}); 
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);

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);