【问题标题】:How to change the array based on index in nested object javascript如何根据嵌套对象javascript中的索引更改数组
【发布时间】:2020-11-10 08:21:54
【问题描述】:

我有一个嵌套数组对象,键 value 数组,

基于索引,将值替换为内容参数

如何根据javascript中的索引值改变数组值

function changeValue(i,content){
 var result = obj.map(e=>{
     ...e,
     value: value[content]
  })

}

var obj=[
  {id:0, value:["SG","10","img"]}
]

Expected Output:
this.changeValue(1,"40");
[
 {id:0, value:["SG","40","img"]}
]

this.changeValue(0,"TH")
[
 {id:0, value:["TH","10","img"]}
]

【问题讨论】:

  • obj 是唯一一个元素数组吗?
  • 第一个映射甚至不应该工作,因为它包含语法错误,除非您将对象包装到括号中 () 它将被视为函数体而不是返回值

标签: javascript arrays loops object


【解决方案1】:

您可以通过直接更改索引来更改值。

var obj = [
  { id: 0, value: ["SG","10","img"] }
];

function changeValue(i, content){
  var result = obj.map(e => {
    const value = [...e.value];
    value[i] = content;
    return { ...e, value };
  });
  return result;
}

console.log(changeValue(1,"40"));
console.log(changeValue(0,"TH"));

【讨论】:

    【解决方案2】:

    您可以将object.assign 带到一个数组中,并将数组和一个对象作为值。

    function changeValue(i, content) {
        return obj.map(e => ({
            ...e,
            value: Object.assign([], e.value, { [i]: content })
        }));
    }
    
    var obj = [{ id:0, value: ["SG", "10", "img"] }];
    
    console.log(changeValue(1, "40")); // [{ id: 0, value: ["SG", "40", "img"] }]
    console.log(changeValue(0, "TH")); // [{ id: 0, value: ["TH", "10"," img"] }]
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      猜你喜欢
      • 2020-12-20
      • 2019-10-18
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2021-10-29
      • 2020-03-11
      • 2021-12-29
      • 2021-11-28
      相关资源
      最近更新 更多