我有下面的代碼,其中我試圖在沒有資料的陣列索引之一中推送“無資料”。
data = ['a', 'b', '', 'd', 'e'];
onClick() {
this.data.forEach(element => {
if (element == '') {
element.push('No Data');
}
});
console.log(this.data);
}
但我收到錯誤,因為 TypeError: element.push is not a function。
代碼有什么問題,有沒有更好的方法來解決這個問題?
uj5u.com熱心網友回復:
let list = this.data.map(d => d === '' ? 'No data' : d)
uj5u.com熱心網友回復:
因為element是字串,而push函式僅支持陣列。只是回傳'No data'以防萬一element是空字串:
data = ['a', 'b', '', 'd', 'e'];
onClick() {
this.data = this.data.map(v => v || 'No Data');
console.log(this.data);
}
uj5u.com熱心網友回復:
陣列的每個元素都是一個字串。
字串沒有 push 方法,也不能,因為它們是不可變的。那就是你不能改變字串中的字符。
然而,這很容易解決,如下所示:
this.data = this.data.map(d => d === '' ? 'No Data' : d);
我們在這里所做的是使用Array.prototype.map將陣列轉換為一個新陣列,并根據您的規范替換所有空字串元素。
在背景關系中:
data = ['a', 'b', '', 'd', 'e'];
onClick() {
this.data = this.data.map(d => d === '' ? 'No Data' : d);
console.log(this.data);
}
uj5u.com熱心網友回復:
element是不能push的字串,用array.map解決
const data = ['a', 'b', '', 'd', 'e'];
onClick() {
const list = this.data.map(element => {
if (element === '') {
return 'No Data';
}
return element;
});
console.log(list);
}
uj5u.com熱心網友回復:
您可以使用替換來映射陣列。
let data = ['a', 'b', '', 'd', 'e'];
data = data.map(v => v || 'No Data');
console.log(data);
uj5u.com熱心網友回復:
data = ['a', 'b', '', 'd', 'e'];
var dataArray = new Array();
data.forEach(element => {
if (element == '') {
dataArray.push('No Data');
}
else
{
dataArray.push(element);
}
});
console.log(this.dataArray);
uj5u.com熱心網友回復:
當您使用 for 或 for 每個回圈時,特定元素是一個字串,而不是一個陣列,為什么它顯示element.push 不是一個函式。
要更改陣列的元素,您可以使用此方法
data = ['a', 'b', '', 'd', 'e'];
for (var i = 0; i < data.length; i ){
if (data[i] == '')
data[i] = 'No Data';}
console.log(data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/395639.html
標籤:javascript 有角的 打字稿
