JavaScript:为数组中的每个值添加键

3

我有一个简单的数组,如下所示。我的目标是在每个数组值的前面加上一个键id,以实现以下效果:["id:a", "id:b","id:c","id:d"]。有没有一种简单的方法来实现这个目标?非常感谢您的帮助。

var test = ['a','b','c','d']


使用map函数。 - klugjo
1
你可以在每个元素前面加上"id:",然后通过迭代来处理。但这具体用于什么呢?看起来并没有多大帮助。似乎你想把它变成一个带有键的对象,而不是字符串数组。 - Spencer Wieczorek
使用以下方式使用map函数:text.map(x => "id:" + x),查看浏览器支持情况。 - PresidentPratik
6个回答

7
您可以使用 .map() 方法:

var test = ['a', 'b', 'c', 'd'];

function setID(item, index) {
  var fullname = "id: " + item;
  return fullname;
}

var output = test.map(setID);
console.log(output);


"map"函数能够很好地解决问题。只是需要注意,由于需要在内存中保存两个数组,因此会使内存大小加倍。这可能重要,也可能不重要,但需要考虑。 - vol7ron
2
@ObsidianAge 这个方法很好,但我想把它变成这样[{"id":"a"}, {"id":"b"}, {"id":"c"}, {"id":"d"}]。 - Best Jeanist

4
使用 Array.from!它非常简单且更快。

var test = ['a', 'b', 'c', 'd'];
var newTest = Array.from(test, val => 'id: '+ val);
console.log(newTest);


1

只需使用forEach迭代数组并设置值:

var test = ['a','b','c','d']
test.forEach((v,i,arr)=>arr[i]=`id:${v}`)

console.log(test)

当然,标准的for循环也可以工作:

var test = ['a','b','c','d']

for ( var i=0, n=test.length; i<n; i++){
   test[i] = 'id:' + test[i]
}

console.log(test)


1

无法编辑@ObsidianAge的回答,因此进行了小修改:

If you need in the form that the OP asked (Array of objects)

var test = ['a', 'b', 'c', 'd'];

function setID(item, index) {
  var fullname = {"id: ": item};
  return fullname;
}

var output = test.map(setID);
console.log(output);


0
使用 map 创建一个新数组,并将字符串简单地前置 "id: "。

var test = ['a','b','c','d'];

var newTest = test.map(function(item){return 'id:' +item})

console.log(newTest); // gives ["id": "a","id": "b","id": "c","id": "d"];

console.log(newTest[1]); // gives 1d: b;


我们不想要一个数组对象,只想在字符串前面添加id:。 - D. Seah
抱歉,我误读了,您仍然可以使用相同的方法,但返回一个字符串而不是对象。答案已经修改。 - gavgrif

0

正如@klugjo所说,使用map函数,像这样:

var array1 = ['a','b','c','d'];

const map1 = array1.map(x => 'id:' + x);

console.log(map1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接