javascript - 如何在javascript中用arrayobject值替换/更改数组值
问题描述
如何通过 javascript 中的数组值更改嵌套数组对象。
我有数组对象nestobj
和数组arr
,如果位置和数组匹配,则替换javascript中的值。
我需要知道如何更改nestobj
具有相同变量名的数组对象
var nestobj =[
{id:1, name: "xyz", place: "CH"},
{id:2, name: "zen", place: "JP"},
{id:3, name: "abc", place: "TH"},
{id:4, name: "ram", place: "MY"},
{id:5, name: "mike", place: "AU"},
]
var arr=[
"JP:Japan",
"CH:Chennai",
"AU:Australia"
]
Expected Ouput
[
{id:1, name: "xyz", place: "Chennai"},
{id:2, name: "zen", place: "Japan"},
{id:3, name: "abc", place: "TH"},
{id:4, name: "ram", place: "MY"},
{id:5, name: "mike", place: "Australia"},
]
arr.map(ii=>{
var kv = ii.split(':');
nestobj.map(e=>{
if(e.place === kv[0]){
return {
...e,
place: kv[1]
}
else{
...e,
place: e.place
}
}
})
})
console.log(nestobj)
解决方案
这是你的意思吗?
let nestobj =[
{id:1, name: "xyz", place: "CH"},
{id:2, name: "zen", place: "JP"},
{id:3, name: "abc", place: "TH"},
{id:4, name: "ram", place: "MY"},
{id:5, name: "mike", place: "AU"},
]
const arr=[
"JP:Japan",
"CH:Chennai",
"AU:Australia",
]
nestobj = nestobj.map((item, index) => {
for(let i = 0; i < arr.length; i++) {
const key = arr[i].split(":")[0]
const value = arr[i].split(":")[1]
if(item["place"] === key) {
item["place"] = value
}
}
return item
})
console.log(nestobj)
新的nestobj
将是:
[
{id:1, name: "xyz", place: "Chennai"},
{id:2, name: "zen", place: "Japan"},
{id:3, name: "abc", place: "TH"},
{id:4, name: "ram", place: "MY"},
{id:5, name: "mike", place: "Australia"},
]
我建议您使用let
(for dynamic variables) 和const
(for static variables) 来避免在 Javascript 中提升。
推荐阅读
- aws-cdk - 如何在 CDK 管道中运行数据库迁移
- javascript - 按出现次数升序对元素数组进行排序
- javascript - 如何为具有不同类名的元素重复 Javascript 表达式
- php - 找不到子字符串最后一次出现的位置
- kotlin - 如何输出服务器已启动
- javascript - Uncaught (in promise) SyntaxError: Unexpected end of JSON input - undefined auth token
- java - 从文件读取时如何添加到 Java LinkedList?
- ruby-on-rails - 在 PSQL 或 .... 中存储 LARGE PDF?
- typescript - 是否可以编写一个通用的 enum-member-name getter?
- angular - 打字稿/角度不是函数错误