[英]Is possible to rewrite all values in array without for loop in javascript?
假設我們有一個數組(myArray),其數據如下:
0: myArray
content: 'something'
date: '15.5.2015'
name: 'Abc'
1: myArray
content: 'text'
date: '15.5.2015'
name: 'Bla'
2: etc ...
現在,為了重寫該數組中一個對象屬性的所有值(例如,變成空字符串)(例如:“ content”),我將使用如下的for循環:
for(var i = 0; i < myArray.length; i++){
myArray[i].content = '';
}
因此,結果將是:
0: myArray
content: ''
date: '15.5.2015'
name: 'Abc'
1: myArray
content: ''
date: '15.5.2015'
name: 'Bla'
2: etc ...
我的問題是:是否可以在不使用javascript循環的情況下做同樣的結果? 像這樣:
myArray[all].content.RewriteInto('');
Tnx的想法。
您所做的任何事情最終都會以某種方式循環播放。 但是, 您不必循環...
因為我們現在有了函數數組方法! 您可能正在尋找map
或reduce
,也許兩者都有,因為您想要轉換(映射)每個元素和/或將它們組合為一個(reduce)。
例如,我們可以獲取您的數據並返回一個字符串,其中所有content
字段都使用以下方式連接:
var data = [{ content: 'something', date: '15.5.2015', name: 'Abc' }, { content: 'text', date: '15.5.2015', name: 'Bla' }]; var result = data.map(function(it) { return it.content; }).join(' '); document.getElementById('r').textContent = JSON.stringify(result);
<pre id="r"></pre>
要從每個項目中刪除content
字段,而無需修改輸入,您可以:
var data = [{ content: 'something', date: '15.5.2015', name: 'Abc' }, { content: 'text', date: '15.5.2015', name: 'Bla' }]; var result = data.map(function(it) { return {date: it.date, name: it.name}; }); document.getElementById('r').textContent = JSON.stringify(result);
<pre id="r"></pre>
您應該查看map函數 。 像這樣使用它:
myArray.map(function (data) {
return data.content = 'value';
}
正如您對問題的第一條評論指出的那樣,您始終必須使用循環,但是您可以使用以下原型對數組進行猴子修補:
Array.prototype.rewriteInto = function(key, rewriteVal){
for(var k in this){
this[k][key] = rewriteVal;
}
};
var testData = new Array();
testData.push({
content: 'something',
date: '15.5.2015',
name: 'Abc',
});
testData.push({
content: 'something',
date: '15.5.2015',
name: 'bla',
});
console.log(testData);
testData.rewriteInto('content', '');
console.log(testData);
因此,您不必每次都想使用此功能時重寫循環。
看例子
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.