添加到对象数组,将值添加到对象中的属性

时间:2021-03-05 17:12:09

标签: javascript

我是该网站的新手,我在使用 javascript 时遇到了问题,不知道如何解决。

我有 2 个数组: 在第一个数组中,我有 index_rating 形式的元素,即第一个数字表示第二个数组中的索引,我想在其中更新评级。

我想解决这个问题,但不知道如何

let index_rating_array = ["0_1", "2_3", "3_5", "1_0"];

let preferArray = [
{prefer: "sport_swimming", rating: ""},
{prefer: "sport_tennis", rating: ""},
{prefer: "sport_running", rating: ""},
{prefer: "study_archeology", rating: ""}];

let updatedArray = [];
index_rating_array.forEach(element => {

console.log(preferArray[parseInt(element.split('_')[0])]);
console.log(Object.keys(parseInt(element.split('_')[0])));
updatedArray.push(preferArray[parseInt(element.split('_')[0])].rating = element.split('_')[1]);

});

console.log(updatedArray);

我想得到它:

[
{prefer: "sport_swimming", rating: "1"},
{prefer: "sport_tennis", rating: "0"},
{prefer: "sport_running", rating: "3"},
{prefer: "study_archeology", rating: "5"}]

2 个答案:

答案 0 :(得分:0)

分割element的部分后,使用第一部分作为索引到preferArray。然后更新该元素的 rating 属性。

let index_rating_array = ["0_1", "2_3", "3_5", "1_0"];

let preferArray = [
  {prefer: "sport_swimming", rating: ""},
  {prefer: "sport_tennis", rating: ""},
  {prefer: "sport_running", rating: ""},
  {prefer: "study_archeology", rating: ""}
];

index_rating_array.forEach(element => {
  let [index, rating] = element.split("_");
  preferArray[index].rating = rating;
});

console.log(preferArray);

答案 1 :(得分:0)

考虑按字符串的“索引”部分对index_rating_array进行排序,然后使用map将两个数组连接起来。

let index_rating_array = ["0_1", "2_3", "3_5", "1_0"];

let preferArray = [{
    prefer: "sport_swimming",
    rating: ""
  },
  {
    prefer: "sport_tennis",
    rating: ""
  },
  {
    prefer: "sport_running",
    rating: ""
  },
  {
    prefer: "study_archeology",
    rating: ""
  }
];

index_rating_array.sort();

let outputArray = preferArray.map((el, idx) => ({
  ...el,
  rating: index_rating_array[idx].slice(-1)
}));

console.log(outputArray)

这确实依赖于 index_rating_arraypreferArray 具有相同数量的项目,并且没有项目丢失或重复。