我有以下数组,其中包含较小的数组。
var fruits = [["Bananas", "2"], ["Apples", "4"], ["Oranges", "5"]];
我想这样显示,去掉小数组里的逗号,加上一个连字符。
香蕉 - 2
苹果--4个
橙子--5个
我已经尝试了以下方法,然而还是不行。
var fruits = [
["Bananas", "2"],
["Apples", "4"],
["Oranges", "5"]
];
var fruitsToday = [];
for (i = 0; i < fruits.length; i++) {
fruitsToday += fruits[i].join(" - ");
}
document.getElementById("today").innerHTML = fruitsToday.join("<br>");
如果有任何帮助,我将非常感激!
编辑补充说明和阅读。
隐式胁迫是由二进制+运算符触发的,当任何操作数是一个字符串时
你需要使用一个数组并推送到它。 使用 +
操作符将把数组胁迫成一个字符串,并将这些字符串连接起来。
var fruits = [["Bananas", "2"], ["Apples", "4"], ["Oranges", "5"]];
var fruitsToday = [];
for (i=0; i < fruits.length; i++) {
fruitsToday.push(fruits[i].join(" - "));
}
document.getElementById("today").innerHTML = fruitsToday.join("<br>");
<div id="today"></div>
你可以将连接的项目进行映射,然后使用数组进行输出。
var fruits = [["Bananas", "2"], ["Apples", "4"], ["Oranges", "5"]],
fruitsToday = fruits.map(a => a.join(' - '));
document.getElementById("today").innerHTML = fruitsToday.join('<br>');
<div id="today"></div>
应该可以在一行中完成 :)
var fruits = [["Bananas", "2"], ["Apples", "4"], ["Oranges", "5"]];
document.getElementById("today").innerHTML = fruits.map(f => f.join(" - ")).join("<br>");
<span id="today"><span>
你的代码很好用。问题是 fruitsToday.join("<br>");
因为 fruitsToday
是字符串和 join()
只适用于数组。
var fruits = [["Bananas", "2"], ["Apples", "4"], ["Oranges", "5"]];
var fruitsToday = [];
for (i=0; i < fruits.length; i++) {
fruitsToday += (fruits[i].join(" - ") + '<br/>');
}
document.getElementById("today").innerHTML = fruitsToday;
<div id=today></div>
问题在于数组和数组之间的隐式字符串连接。fruitsToday
和索引处的数组 i
->
fruits[i]
.
fruitsToday += fruits[i].join(" - ");
^
通过调用函数 Array.prototype.push
let fruits = [
["Bananas", "2"],
["Apples", "4"],
["Oranges", "5"]
];
let fruitsToday = [];
for (let i = 0; i < fruits.length; i++) {
fruitsToday.push(fruits[i].join(" - "));
}
document.getElementById("today").innerHTML = fruitsToday.join("<br>");
<div id="today"></div>
类似于下面使用map()的方法,但是使用新的元素创建所需的新数组 "fruitToday"。然后你可以根据自己的意愿使用新数组。
var fruits = [["Bananas", "2"], ["Apples", "4"], ["Oranges", "5"]];
var fruitsToday = [];
fruits.map(function(e) {fruitsToday.push(e[0]+" - "+ e[1]);})
console.log(fruitsToday);