第一个数组
userData = [
{ name: abc, age: 24 },
{ name: ghi, age: 22 },
{ name: tyu, age: 20 }
];
第二个数组
userAge = [
{ age: 25 },
{ age: 26 },
{ age: 22 }
];
两个数组都有相同的长度。
如何使用Underscore.js使用useData[0].age
更新userAge[0]
?
答案 0 :(得分:0)
由于您需要在字典列表中执行此操作,因此您需要使用_.each
迭代列表。
这样的事情会有所帮助,
static int exec_prog(const char **argv)
{
pid_t my_pid;
int status, timeout /* unused ifdef WAIT_FOR_COMPLETION */;
if (0 == (my_pid = fork())) {
if (-1 == execve(argv[0], (char **)argv , NULL)) {
perror("child process execve failed [%m]");
return -1;
}
}
#ifdef WAIT_FOR_COMPLETION
timeout = 1000;
while (0 == waitpid(my_pid , &status , WNOHANG)) {
if ( --timeout < 0 ) {
perror("timeout");
return -1;
}
sleep(1);
}
printf("%s WEXITSTATUS %d WIFEXITED %d [status %d]\n",
argv[0], WEXITSTATUS(status), WIFEXITED(status), status);
if (1 != WIFEXITED(status) || 0 != WEXITSTATUS(status)) {
perror("%s failed, halt system");
return -1;
}
#endif
return 0;
}
答案 1 :(得分:0)
虽然@martianwars是正确的,但如果它可以应用任何属性,它可能会更通用,因此更有用。
假设我们要应用一组更改,每个更改不一定是相同的属性,甚至每个对象都有多个属性:
var changes = [
{ age: 25 },
{ name: "Guy" },
{ name: "Pierre", age: 22 }
];
可以使用_.extendOwn
_.each(userData, function(data, index) {
_.extendOwn(data, changes[index]);
});
概念证明:
var userData = [{
name: "abc",
age: 24
}, {
name: "ghi",
age: 22
}, {
name: "tyu",
age: 20
}];
var changes = [{
age: 25
}, {
name: "Guy"
}, {
name: "Pierre",
age: 22
}];
_.each(userData, function(data, index) {
_.extendOwn(data, changes[index]);
});
console.log(userData);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
&#13;
这仅在阵列同步时才有效。这意味着如果userData
数组中有4个对象,并且只有3个更改,则它们需要位于正确的索引处,这可能会成为问题。
对此的解决方案是拥有一个标识属性,通常由id
属性表示。
userData = [
{ id: '1', name: 'abc', age: 24 },
{ id: '2', name: 'ghi', age: 22 },
{ id: '3', name: 'tyu', age: 20 }
];
有关详细信息,请参阅Merge 2 objects based on 1 field using Underscore.js。